Gibt es eine einfache Möglichkeit, die Internetverbindung von der Konsole aus zu überprüfen? Ich versuche, in einem Shell-Skript herumzuspielen. Ich scheine die Idee zu haben , den HTTP-Antwortcode zu überprüfen, um zu interpretieren, ob die Internetverbindung einwandfrei funktioniert. Aber ich denke, es muss ein einfacher Weg sein, ohne eine Seite zu überprüfen, die niemals abstürzt;)wget --spider http://www.google.co.in/
Edit: Scheint so, als ob es viele Faktoren geben kann, die individuell untersucht werden können, eine gute Sache. Im Moment ist es meine Absicht zu überprüfen, ob mein Blog ausgefallen ist. Ich habe Cron eingerichtet, um es jede Minute zu überprüfen. Dazu überprüfe ich den HTTP-Antwortcode von wget -spider in meinem Blog. Wenn es nicht 200 ist, benachrichtigt es mich (ich glaube, dies ist besser, als nur zu pingen, da die Site unter starker Last sein kann und eine Zeitüberschreitung aufweist oder sehr spät reagiert). Gestern gab es ein Problem mit meinem Internet. LAN war gut verbunden, aber ich konnte auf keine Seite zugreifen. Daher erhalte ich immer wieder Benachrichtigungen, da das Skript in der wget-Antwort keine 200 gefunden hat. Jetzt möchte ich sicherstellen, dass eine Benachrichtigung angezeigt wird, wenn eine Internetverbindung besteht.
Die Überprüfung auf DNS- und LAN-Konnektivität ist für mich ein bisschen übertrieben, da ich nicht so genau herausfinden muss, um welches Problem es sich handelt. Also, was schlagen Sie vor, wie ich es mache?
Hier ist mein Skript, mit dem ich die Ausfallzeiten meines Blogs überprüfen kann:
#!/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
Auf diese Weise muss ich nur dann auf Internetverbindung prüfen, wenn ein Problem mit meinem Blog-Antwortcode vorliegt. Es ist ein bisschen schwer (da ich kein Ping verwende), sollte aber keine falsch positiven Ergebnisse liefern. Recht? Wie kann ich auch das Pingen zu einer anderen Site, wie Facebook, Google, Yahoo usw., zufällig einstellen? Auch (ich habe versucht, jegliche E / A zu vermeiden) kann ich in eine Protokolldatei schreiben, mit der ich die Anzahl der Ausfallzeitprüfungen und -prüfungen überprüfen kann Überspringen Sie dann weitere Überprüfungen, bis die Site nicht mehr verfügbar ist, oder führen Sie längere Überprüfungen durch (10 Minuten statt jeder Minute). Was denkst du?