即使网站在线,Ping也会返回false

Min*_*dau 2 unix linux bash ping sh

我写了一个简单的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
Run Code Online (Sandbox Code Playgroud)

但有时...$site is not reachable. ...即使网站上线,我也会受到阻碍.

有什么想法可能导致糟糕的砰?

tha*_*guy 6

您只发送一个数据包,因此您可能会冒很多误报.

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

考虑wget改用.它有像--tries=10和一样的选项--waitretry=6,它会给主机一分钟的时间来响应几次连接尝试,每次尝试都有几个数据包.

这还可以让您知道主机是否正确响应或者是否有错误响应.

  • 另外:ping有时会被故意阻止,wget不会(至少对于网站而言). (4认同)