有时多台服务器之间存在网络波动,需要一直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