有没有一种简单的方法可以从控制台检查 Internet 连接?我正在尝试在 shell 脚本中玩耍。我似乎的一个想法是检查 HTTP 响应代码以解释 Internet 连接是否工作正常。但我认为必须有简单的方法,而不需要检查一个永不崩溃的网站;)wget --spider http://www.google.co.in/
编辑:似乎有很多因素可以单独检查,好事。我目前的意图是检查我的博客是否已关闭。我已经设置了 cron 每分钟检查一次。为此,我正在检查我博客的 wget --spider 的 HTTP 响应代码。如果不是 200,它会通知我(我相信这会比 ping 它更好,因为该站点可能负载过重,并且可能会超时或响应很晚)。现在昨天,我的互联网出现了一些问题。局域网连接良好,但我无法访问任何站点。所以我不断收到通知,因为脚本在 wget 响应中找不到 200。现在我想确保当我有互联网连接时它会向我显示通知。
因此,检查 DNS 和 LAN 连接对我来说有点矫枉过正,因为我没有那么具体的需要找出它是什么问题。那你建议我怎么做?
这是我的脚本,用于继续检查我的博客的停机时间:
#!/bin/bash
# Sending the output of the wget in a variable and not what wget fetches
RESULT=`wget --spider http://blog.ashfame.com 2>&1`
FLAG=0
# Traverse the string considering it as an array of words
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means all good
fi
done
if [ $FLAG -eq '0' ]; then
# A good point is to check if the internet is working or not
# Check if we have internet connectivity by some other site
RESULT=`wget --spider http://www.facebook.com 2>&1`
for x in $RESULT; do
if [ "$x" = '200' ]; then
FLAG=1 # This means we do have internet connectivity and the blog is actually down
fi
done
if [ $FLAG -eq '1' ]; then
DISPLAY=:0 notify-send -t 2000 -i /home/ashfame/Dropbox/Ubuntu/icons/network-idle.png "Downtime Alert!" "http://blog.ashfame.com/ is down."
fi
fi
exit
这样,我只需要在我的博客响应代码出现问题时检查互联网连接。它有点重(因为我没有使用 ping)但不应该给出任何误报。正确的?另外,我如何每次都随机 ping 到不同的站点,例如 facebook、google、yahoo 等。另外(我试图避免任何 I/O)我可以写入一个日志文件,通过该文件我可以检查停机检查的计数和然后跳过进一步的检查,直到站点关闭或导致更长的检查(10 分钟而不是每分钟)。你怎么看?
检查特定网站是否已启动
首先,提供多种良好的在线监控服务。为了选择一个,Pingdom 包括用于监视一个目标的免费帐户。(免责声明:我与 Pingdom没有任何关系)。
其次,
wget --spider
用于您自己的脚本是一个好主意。当您的计算机停机或 DNS 服务器不工作时,您会得到一些误报。检查返回码是实现这一点的直接方法:再一次,这种方法也有缺点。如果您的提供商已经缓存了您的 DNS 记录,但 DNS 服务器已关闭,那么即使监控表明一切正常,其他人也无法访问您的站点。
host
例如,您可以编写简短的解决方法host example.com <your dns server IP>
。如果 DNS 服务器没有响应,这将返回错误,即使 OpenDNS 或您自己的提供商的 DNS 服务器工作正常。检查互联网是否正常工作
在每种情况下都没有真正简单的方法来处理这个问题。
例如,您可以
ping -c1
在多个知名站点(例如 www.google.com、facebook.com 和 ping.funet.fi)上运行并检查返回代码以确定是否可以到达任何目的地。您可以使用变量自动检查返回码$?
。参数-c1
是将 ping 数据包的数量限制为一个。当存在重定向所有 ping 和 HTTP 请求的登录网关时,您可能会遇到一些公共 wifi 的问题。如果是这样,即使您无法访问任何其他站点,您也可能会收到 ping 响应和非错误 HTTP 状态代码。
如果要检查电缆状态,可以使用
从输出(摘录):
但是,这并不能说明您是否真的有连接,而只是说明是否连接了电缆并且另一端是否有东西。
我刚用
它会暂停,直到网络管理器存在网络连接。工作得很好。你也可以用它做其他事情。
我正在使用这种方法...
检查站点是否已启动通常使用诸如
nagios
. 这将持续监控站点,并可以通知您中断。从命令行检查 Internet 是否已启动时,我执行了多个步骤:
ping google.com
(检查 DNS 和已知的可访问站点)。wget
或w3m
获取页面。如果 Internet 不上,则向外诊断。
如果 Internet 已启动但站点已关闭,请使用出现故障的站点进行
w3m http://isup.me/example.com
替换。example.com
如果您没有安装 w3m 浏览器,请使用 wget、lynx 或任何可用的命令行浏览器。这是我用来测试互联网连接的 shell 脚本:
警报.sh
你需要安装 curl 和 mpg321
如果您需要声音警报功能,则需要在同一文件夹中重命名为 alarm.mp3 的 .mp3 声音文件。最后根据您的需要配置网站 URL 和 egrep。
我正在使用这种方法:
它将尝试连接到一个知名网站,如果它可以连接到它,那么我们将假设有互联网。
检查互联网是否正常工作
从输出(摘录):
但是,正如其他人所提到的,这并不能说明您是否真的有连接。例如。您可以连接到路由器,而路由器不一定连接到互联网。
我需要帮助解决同样的问题,我的答案是这样的:
我正在寻找一个可以持续测试我的互联网连接的脚本,它会在我的服务器启动时启动,我做了这个:
一、安装fping
在 /etc/init.d 文件夹中创建一个初始化脚本,内容如下(我称之为 testcon)
在 /etc/init.d 文件夹中创建一个脚本,内容如下(我称之为 testcond)
然后我运行下面的命令来添加到启动:
重启
检查互联网是否正常工作并不是那么简单。ping 是 ICMP,因此即使 Web 代理关闭,它也可能工作。如果您使用 IP 进行测试,DNS 也会发生类似的情况。
由于我的 Internet 连接不稳定,我创建了这个脚本(基于这个),它发出柔和的和弦声来呼叫我,并且在 Internet 连接恢复时使用 Ubuntu 通知: