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

2020-07-14  本文已影响0人  湘港记者

背景

管理的服务器经常因为上级路由器故障导致固定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 ==> 重启网络服务 ==> 登录(或其他操作)==> 记录日志。

上一篇 下一篇

猜你喜欢

热点阅读