我创建了一个脚本来监视远程主机是否在线。目标是让ping等待30秒,以查看服务器是否可用。
for i in $(cat /home/server-list.txt | awk '{print $1}')
do
if ping -c 1 -w 30 $i > /dev/null
then
echo "Server UP"
else
echo $i " -- $(date) -- Server DOWN" >> host-down.txt
fi
done
经过测试,我遇到了随机IP之一的问题。手动检查时,我发现2个IP对ping的响应不同。
在我的第一个示例中,ping按预期报告脱机主机。
ping -w 30 -c 1 198.201.230.34
PING 198.201.230.34 (198.201.230.34) 56(84) bytes of data.
--- 198.201.230.34 ping statistics ---
30 packets transmitted, 0 received, 100% packet loss, time 29233ms
但是在这种情况下,脚本会正确报告状态,但不想运行30秒。而且我注意到ping很快退出了
ping -w 30 -c 1 188.191.32.109
PING 188.191.32.109 (188.191.32.109) 56(84) bytes of data.
From 194.44.136.250 icmp_seq=1 Destination Host Unreachable
From 194.44.136.250 icmp_seq=2 Destination Host Unreachable
From 194.44.136.250 icmp_seq=3 Destination Host Unreachable
--- 188.191.32.109 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3022ms
pipe 4
有什么办法可以解决这个问题?