Ping returns false连网站都在线
Ping returns false even website is online
我写了一个简单的 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 阻止 ...$site is not reachable. ...
。
任何可能导致不良 ping 的想法?
你只发送一个数据包,所以你冒着很多误报的风险。
当链接饱和时,在正常、健康的网络运行期间,数据包通常会被丢弃。如果您的单个数据包丢失,您会认为主机已关闭。
考虑改用 wget
。它有像 --tries=10
和 --waitretry=6
这样的选项,它们会给主机一分钟的时间来响应几次连接尝试,并且每次尝试几个数据包。
这还会让您知道主机是否正确响应或是否响应错误。
我不明白你为什么要使用 ping
来计算 "website is online"。 Ping
没有 Web 服务器响应的主机端口号的概念。 Ping 是 ICMP,Web 服务器响应 HTTP
或 HTTPS
。
如果您只想查看该主机是否已启动,则可以使用 ping。当然,正如有人指出的那样,“ping
”和 ICMP
也可能在网络/主机上被阻止。
此外,其中一件有意义的事情是评估网络服务器是否为 GET
请求返回正确的状态代码(比如 200)。
请查看 here
以了解需要执行的操作的详细信息。
我写了一个简单的 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 阻止 ...$site is not reachable. ...
。
任何可能导致不良 ping 的想法?
你只发送一个数据包,所以你冒着很多误报的风险。
当链接饱和时,在正常、健康的网络运行期间,数据包通常会被丢弃。如果您的单个数据包丢失,您会认为主机已关闭。
考虑改用 wget
。它有像 --tries=10
和 --waitretry=6
这样的选项,它们会给主机一分钟的时间来响应几次连接尝试,并且每次尝试几个数据包。
这还会让您知道主机是否正确响应或是否响应错误。
我不明白你为什么要使用 ping
来计算 "website is online"。 Ping
没有 Web 服务器响应的主机端口号的概念。 Ping 是 ICMP,Web 服务器响应 HTTP
或 HTTPS
。
如果您只想查看该主机是否已启动,则可以使用 ping。当然,正如有人指出的那样,“ping
”和 ICMP
也可能在网络/主机上被阻止。
此外,其中一件有意义的事情是评估网络服务器是否为 GET
请求返回正确的状态代码(比如 200)。
请查看 here
以了解需要执行的操作的详细信息。