コンソールからインターネット接続を確認する簡単な方法はありますか?シェルスクリプトで遊んでいます。インターネット接続が正常に機能しているかどうかを解釈するために、HTTP応答コードを確認することを考えています。しかし、クラッシュしないサイトをチェックする必要のない簡単な方法があるはずだと思います;)wget --spider http://www.google.co.in/
編集:個別に調査できる多くの要因があるように思えますが、良いことです。現時点での私の意図は、ブログがダウンしているかどうかを確認することです。cronを毎分確認するようにセットアップしています。このために、ブログのwget --spiderのHTTP応答コードを確認しています。200ではない場合、通知されます(サイトに負荷がかかり、タイムアウトまたは応答が非常に遅くなる可能性があるため、pingを実行するよりも優れていると思います)。昨日、インターネットに問題がありました。LANは正常に接続されましたが、サイトにアクセスできませんでした。スクリプトが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を使用していないので)少し重いですが、誤検出はありません。右?また、facebook、google、yahooなどのように、毎回異なるサイトへのpingをランダム化する方法もあります。その後、サイトが停止するまでチェックをスキップするか、より長いチェックを実行します(毎分ではなく10分)。どう思いますか?