Existe-t-il un moyen facile de vérifier la connectivité Internet depuis la console? J'essaie de jouer dans un script shell.
Une idée que je semble être à wget --spider http://www.google.co.in/
et vérifier le code de réponse HTTP pour interpréter si la connexion Internet fonctionne correctement. Mais je pense qu'il doit y avoir un moyen facile sans avoir besoin de vérifier un site qui ne plante jamais;)
Modifier: Il semble y avoir beaucoup de facteurs pouvant être examinés individuellement, une bonne chose. Mon intention pour le moment est de vérifier si mon blog est en panne. J'ai installé cron pour le vérifier toutes les minutes. Pour cela, je vérifie le code de réponse HTTP de wget --spider sur mon blog. Si ce n'est pas 200, il m'avertit (je pense que ce sera mieux que de le faire cingler, car le site peut être très chargé et peut arriver à expiration ou répondre très tard). Hier, il y a eu un problème avec mon Internet. LAN était bien connecté mais je ne pouvais accéder à aucun site. Je continue donc à recevoir des notifications car le script n'a pas pu trouver 200 dans la réponse wget. Maintenant, je veux m'assurer qu'il affiche la notification lorsque j'ai la connectivité Internet.
Donc, vérifier la connectivité DNS et LAN est un peu exagéré pour moi, car je n’ai pas vraiment besoin de savoir quel est le problème. Alors, que proposez-vous comment je le fais?
Voici mon script pour continuer à vérifier les temps d’arrêt pour mon blog:
#!/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
De cette manière, je dois vérifier la connectivité Internet uniquement lorsque le code de réponse à mon blog présente un problème. C'est un peu lourd (car je n'utilise pas de ping) mais ne devrait pas donner de faux positifs. Droite? Aussi, comment puis-je randomiser ping à un autre site à chaque fois, comme facebook, google, yahoo etc. Aussi (j'essayais d'éviter toute E / S) je peux écrire dans un fichier journal par lequel je peux vérifier le nombre de contrôles d'arrêt et sautez ensuite d'autres contrôles jusqu'à ce que le site soit arrêté ou que les vérifications soient plus longues (10 minutes au lieu de chaque minute). Que pensez-vous?