通过crontab监测网络状况并自动修复重启

背景

管理的服务器经常因为上级路由器故障导致固定IP无法访问,每次均通过肉身去机房重启解决机器/网络服务解决,非常麻烦,尤其是在假期。因此决定利用crontab和shell脚本定期对网络情况进行监测,如果出现故障则对可能的问题进行修复并重启网络。

脚本

#!/bin/bash
ping www.baidu.com -c 1 >/dev/null
if [ $? -ne 0 ];then
# reset DNS
bash -c 'echo nameserver 166.111.8.28 > /etc/resolv.conf'
# restart network
# /etc/init.d/networking restart
service network-manager restart
# doing other things
bash /home/dev/login.sh
# loging
echo `date` network restart
else
echo `date` network works fine
fi

crontab创建定时任务

因为重启网络服务以及修改DNS均需要sudo权限,因此不是创建用户定时任务,而是在全局定时任务/etc/crontab中创建root用户的定时任务。

sudo vim /etc/crontab

在后面添加:

*/30 * * * *  root  /PATH/TO/SHELL/auto_restart_network.sh >> /PATH/TO/LOGS 2>&1

这样每隔30分钟就会执行监测脚本,如果出现网络故障则会重新配置DNS ==> 重启网络服务 ==> 登录(或其他操作)==> 记录日志。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。