shell脚本PING记录延迟高于指定值

有时多台服务器之间存在网络波动,需要一直ping来判断延迟值,但一直记录ping的延迟值太多了,可以写个脚本判定ping延迟值超过指定值时才记录下来。

1. 新建一个脚本文件pingtest.sh

#!/bin/bash

# 测试IP
IP="192.168.1.55";

# 限制时间
TimeLimit=50;

# 日志文件
LogFile="./ping.log";

while [ 1 ] 
do 
    # 用ping检测1次,设置超时时间为1s,并用awk取延迟值
    rtt=`ping -c 1 -W 1 $IP |grep rtt |awk '{print $4}' |awk -F'/' '{print $2}'`

    # 如果不存在ping延迟时间输出timeout
    if [[ -z $rtt ]];then
        echo `date "+%Y-%m-%d %H:%M:%S"` ping timeout >> $LogFile
    else
        # 判定延迟值是否超出设定限制时间
        if [ $(echo "$TimeLimit <= $rtt"|bc) = 1 ]; then
            echo `date "+%Y-%m-%d %H:%M:%S"` ping time = $rtt ms >> $LogFile
        fi
    fi

    sleep 1 
done

2. 赋予可执行权限

chmod +x pingtest.sh

3. 后台执行

./pingtest.sh &

如果有超ping延迟有超过设定的TimeLimit值时会记录在LogFile设定的文件中

2020-10-22 22:26:09 ping time = 50.198 ms
2020-10-22 22:26:10 ping time = 59.360 ms
2020-10-22 22:26:11 ping time = 59.341 ms
2020-10-22 22:26:12 ping time = 50.054 ms

4. 注意

如果运行脚本时出现bc: command not found,直接安装bc就可以了

yum install -y bc
0%