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

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
如何自动重启Tomcat异常的服务?

1 前言 一个问题,一篇文章,一出故事。 笔者几天前发现Tomcat会因为一个错误而停止服务,虽然进 …

Bash
如何自动挂载目录?

1 前言 一个问题,一篇文章,一出故事。 笔者需要写一个脚本定时挂载目录,但是AutoFS测试过骨兼 …

Bash
如何熟悉shell if?

1 基础知识 1.1 命令使用格式 1.2.1 获取命令帮助 man if 1.2.2 基本判断用法 …