
Bash
1 前言
一个问题,一篇文章,一出故事。
笔者今天遇到家里的服务器网络故障,由于在上班,无法及时修复。
下班后检查不知为何网卡地址丢失(可能与刚进行系统升级有关),检查系统日志亦无所获,但通过重启网络服务可恢复网络。
于是,笔者想到暂时先写一个脚本监视网络状态并自动处理,容后再慢慢查找原因。
2 最佳实践
2.1 创建脚本目录
mkdir ~/scripts
2.2 创建脚本
vim ~/scripts/monitorNetwork.sh
加入如下配置,
#!/bin/bash gatewayIP="10.168.0.1" sleepTime="1" tryCount=10 errCount=5 monitorLog="/var/log/monitorNetwork.log" i=0 errSum=0 while [ $i -lt $tryCount ]; do ping -c 1 "$gatewayIP" > /dev/null 2>&1 if [ "$?" = "1" ]; then let errSum+=1 fi let i+=1 sleep $sleepTime done if [ "$errSum" -ge "$errCount" ]; then echo `date +"%Y-%m-%d %H:%M:%S"`" Network error detected, try to restart the service to repair!" >> $monitorLog systemctl restart NetworkManager network fi
需要注意的是,
– 参数“gatewayIP”声明用于网络检测的网关地址
– 参数“sleepTime”声明每次检测停顿的时间间隔
– 参数“tryCount”声明尝试检测的次数
– 参数“errCount”声明当检测到多少次网络错误后执行重启网络服务
– 参数“monitorLog”声明输出的日志文件路径
2.3 设置脚本触发
crontab -e
加入如下设置,
*/5 * * * * sh ~/scripts/monitorNetwork.sh
没有评论