如何在控制台中检查Internet连接?

Modified on: Sat, 09 Jun 2018 14:02:23 +0800

是否有一种简单的方法可以从控制台检查Internet连接?我试图在shell脚本中玩。
我似乎有一个想法是wget --spider <a rel="nofollow" href="http://www.google.co.in/">http://www.google.co.in/</a>并检查HTTP响应代码以解释Internet连接是否正常工作。但我认为必须有一个简单的方法,而不需要检查一个永不崩溃的网站;)

编辑:似乎可以有很多因素可以单独检查,好事。我目前的意图是检查我的博客是否已关闭。我已经设置了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&gt;&amp;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&gt;&amp;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分钟而不是每分钟)。你觉得怎么样?

作者:muru,Ashfame

最佳答案

检查特定网站是否已启动

首先,提供多种良好的在线监测服务。为了选择一个,Pingdom包括用于监控一个目标的免费帐户。 (免责声明:我以任何方式与Pingdom有关联。)

其次,使用wget --spider作为自己的脚本是个好主意。当您的计算机关闭或DNS服务器不工作时,您会得到一些误报。检查返回代码是实现此目的的简单方法:

wget --spider --quiet http://example.com
if [ "$?" != 0 ]; then
  echo "Website failed!" | mail -s "Website down" your_email@provider.tld
fi

然而,这种方法还存在缺点。如果您的提供商已缓存您的DNS记录,但DNS服务器已关闭,则其他人无法访问您的网站,即使监控显示一切正常。您可以使用host编写简短的解决方法,例如host example.com &lt;your dns server IP&gt;。如果DNS服务器没有响应,即使OpenDNS或您自己的提供商的DNS服务器工作正常,也会返回错误。

检查互联网是否正常工作

在每种情况下都没有简单的方法来处理这个问题。

例如,您可以在多个众所周知的网站(例如www.google.com,facebook.com和ping.funet.fi)上运行ping -c1,并检查返回代码以确定是否有目的地是可达的。您可以使用变量$?自动检查返回代码。参数-c1将ping数据包的数量限制为一个。

当存在重定向所有ping和HTTP请求的登录网关时,您可能会遇到某些公共wifis的问题。如果是这样,即使您无法访问任何其他网站,也可能会收到ping响应和非错误HTTP状态代码。

如果要检查电缆状态,可以使用

sudo ethtool eth0

从输出(摘录):

Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
Link detected: yes

然而,这并不能说明你是否真的有连接,只是连接了电缆而另一端是某些

作者:,Olli

相关问答

添加新评论