这是我的第一篇帖子。
我编写了一个脚本,每 5 分钟提供一次我的网络报告。该脚本很简单,除了我的网络出现问题外,其他都运行良好。该脚本在 Ubuntu Server 18.04 中运行。
我的 Ping 命令如下:
ping -w 300 192.168.1.216
问题在于,当我遇到数据包丢失时,ping 立即停止,无法完成 300 秒(5 分钟)的运行。我在网上和其他地方都查过了,但还是没能找到解决方案,让 ping 在数据包丢失时继续运行。以下是示例:
ping -w 300 192.168.1.216
PING 192.168.1.216 (192.168.1.216) 56(84) bytes of data.
64 bytes from 192.168.1.216: icmp_seq=1 ttl=128 time=2.29 ms
64 bytes from 192.168.1.216: icmp_seq=2 ttl=128 time=4.14 ms
64 bytes from 192.168.1.216: icmp_seq=3 ttl=128 time=17.9 ms
64 bytes from 192.168.1.216: icmp_seq=4 ttl=128 time=40.6 ms
64 bytes from 192.168.1.216: icmp_seq=5 ttl=128 time=38.6 ms
From 192.168.1.2 icmp_seq=30 Destination Host Unreachable
From 192.168.1.2 icmp_seq=31 Destination Host Unreachable
From 192.168.1.2 icmp_seq=32 Destination Host Unreachable
--- 192.168.1.216 ping statistics ---
33 packets transmitted, 5 received, +3 errors, 84% packet loss, time 32657ms
rtt min/avg/max/mdev = 2.295/20.738/40.659/16.379 ms, pipe 4
谢谢。
编辑原因:添加完整的脚本代码。
完整脚本代码:
Location="XXX"
host="192.168.6.1"
while true
do
result=$(ping -w 300 -q $host)
sendemail \
-f "[email protected]" \
-u "XXX 5 Minutes Network Report" \
-t "[email protected]" \
-s "smtp.gmail.com:587" \
-o tls=yes \
-xu "[email protected]" \
-xp "password" \
-m "$result"
done
这是为了检查我们的 VPN 状态。正如我所说,这是一个非常简单的脚本。我按照建议使用 ping -c 1 来应对紧急情况,这样我们就可以尽快知道 VPN 中是否存在连接问题。
答案1
我会考虑将脚本改为ping -c 1 <ip-address>
每五分钟运行一次,而不是依赖ping
二进制文件来提供该行为。然后,您还可以检查返回状态($?
)以确定它是成功还是失败。
如果您也发布您的脚本将会很有帮助,这样您的问题的背景就可以更容易地理解。