如何监视网络并执行处理?

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
没有评论

发表评论

Bash
如何熟悉Linux经典功能shell?

1 前言 一个问题,一篇文章,一出故事。 笔者想用一篇文章收集记录经典的脚本命令集合,于是产生此文( …

Bash
如何使用Shell脚本筛选DNS记录?

1 前言 一个问题,一篇文章,一出故事 笔者生产的服务器需要使用谷歌推送,但是DNS解析出来的IP有 …

Bash
如何统计MySQL多表行数?

1 前言 一个问题,一篇文章,一出故事。 今天迁移了一个数据库,用户提出需要验证数据是否完整,于是想 …