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

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
如何实现文件夹路径转纯数字符串?

1 前言 一个问题,一篇文章,一出故事。 由于由于需要设置某目录的配额,配额要求为每个目录指定一个项 …

Bash
如何统计Linux打开文件前10进程?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台服务最近压力比较大,打开的文件数量不断地往 …

Bash
如何获取VSFTP昨天活跃和有效用户?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台老旧的FTP服务器,用户众多。笔者希望每天 …