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

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
如何jstack抓取Java的堆栈信息?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台Tomcat的服务由于需要分析内存越来越大 …

Bash
如何top抓取Java进程的资源使用信息?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台Tomcat的服务由于需要分析内存越来越大 …

Bash
如何jmap抓取Java程序堆转储快照?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台Tomcat的服务由于需要分析内存越来越大 …