Existe-t-il un moyen simple de vérifier la connectivité Internet à partir de la console? J'essaie de jouer dans un script shell. Une idée semble être de 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;)wget --spider http://www.google.co.in/
Edit: On dirait qu'il peut y avoir beaucoup de facteurs qui peuvent être examinés individuellement, c'est une bonne chose. Mon intention pour le moment est de vérifier si mon blog est en panne. J'ai configuré 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 simplement le cingler, car le site peut être sous forte charge et peut être en cours de temporisation ou répondre très tard). Hier, il y a eu un problème avec mon Internet. Le 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 une notification lorsque j'ai une connexion Internet.
Donc, vérifier la connectivité DNS et LAN est un peu exagéré pour moi car je n'ai pas vraiment besoin de comprendre de quel problème il s'agit. Alors, que proposez-vous comment je le fais?
Voici mon script pour continuer à vérifier les temps d'arrêt de 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 façon, je dois vérifier la connectivité Internet uniquement en cas de problème avec le code de réponse de mon blog. C'est un peu lourd (car je n'utilise pas de ping) mais ne devrait pas donner de faux positifs. Droite? De plus, comment puis-je randomiser le ping sur un site différent à chaque fois, comme Facebook, Google, Yahoo etc. puis ignorez les vérifications supplémentaires jusqu'à ce que le site soit en panne ou provoquez des vérifications plus longues (10 minutes au lieu de toutes les minutes). Qu'est-ce que tu penses?