大量数据包丢失时 Ping 停止

大量数据包丢失时 Ping 停止

这是我的第一篇帖子。

我编写了一个脚本,每 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二进制文件来提供该行为。然后,您还可以检查返回状态($?)以确定它是成功还是失败。

如果您也发布您的脚本将会很有帮助,这样您的问题的背景就可以更容易地理解。

相关内容