linux - 即使网站在线,Ping 也返回错误

标签 linux bash unix sh ping

我写了一个简单的 bash 脚本来监控我的网站。

#!/bin/bash
# script to check website status (online/offline)

while read site
do
    if ping -w 60 -c1 -q "$site" &>/dev/null; then
        echo "$site is up"
    else
        echo "[$(date +%d-%m-%Y:%H:%M:%S)] $site is not reachable." | slackpost.sh
    fi
done < /home/pi/scripts/www-status/sites.txt # list of sites to check

但有时我会遇到 else block ...$site is not reachable。 ... 即使网站在线。

任何可能导致不良 ping 的想法?

最佳答案

你只发送一个数据包,所以你冒着很多误报的风险。

当链路饱和时,在正常、健康的网络运行期间,数据包通常会被丢弃。如果您的单个数据包丢失,您会认为主机已关闭。

考虑改用 wget。它有诸如 --tries=10--waitretry=6 之类的选项,这将给主机一分钟的时间来响应几次连接尝试,并且每次尝试发送几个数据包。

这还会让您知道主机是否正确响应或是否响应错误。

关于linux - 即使网站在线,Ping 也返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078457/

相关文章:

c - 此 C 代码仅获取 HTTP header ,但不是 html 文件

python - bash 脚本在启动另一个相同的 python 脚本后杀死 python 脚本

php - UTF-8贯穿始终

python - 为什么 subprocess.Popen 返回码与 bash 的类似命令不同

linux - 如何在 UNIX 中将 AWK 的多行输出插入到数组中

linux - 基于两列(双向)删除重复行,只保留一列

bash - 在 Bash 的 'if' 循环中使用 'while'

bash - 使用 diff 忽略新行和括号样式

bash - 使用 shell 脚本解压缩 .lzo 文件

c# - Rfc2898DeriveBytes 是否等同于 PKCS5_PBKDF2_HMAC_SHA1?