Existe uma maneira fácil de verificar a conectividade da Internet no console? Eu estou tentando brincar em um script de shell. Uma idéia que eu pareço é verificar o código de resposta HTTP para interpretar se a conexão com a Internet está funcionando bem. Mas acho que deve haver uma maneira fácil, sem a necessidade de verificar um site que nunca falha;)wget --spider http://www.google.co.in/
Edit: Parece que pode haver muitos fatores que podem ser examinados individualmente, coisa boa. Minha intenção no momento é verificar se meu blog está inativo. Eu configurei o cron para verificar a cada minuto. Para isso, estou verificando o código de resposta HTTP do wget --spider no meu blog. Se não for 200, ele me notificará (acredito que isso será melhor do que apenas fazer ping, pois o site pode estar com muita carga e pode estar atingindo o tempo limite ou responder muito tarde). Agora ontem, houve algum problema com minha Internet. A LAN estava conectada corretamente, mas não consegui acessar nenhum site. Então, continuo recebendo notificações, pois o script não conseguiu encontrar 200 na resposta do wget. Agora, quero ter certeza de que ele será exibido quando eu tiver conectividade com a Internet.
Portanto, verificar a conectividade DNS e LAN é um pouco exagerado para mim, pois não tenho essa necessidade específica de descobrir qual é o problema. Então, o que você sugere como eu faço isso?
Aqui está o meu script para continuar verificando o tempo de inatividade do meu 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
Dessa forma, preciso verificar a conectividade com a Internet somente quando houver um problema com o código de resposta do meu blog. É um pouco pesado (como eu não estou usando ping), mas não deve dar nenhum falso positivo. Direita? Além disso, como posso aleatoriamente executar ping em um site diferente a qualquer momento, como facebook, google, yahoo etc. Também (eu estava tentando evitar qualquer E / S), posso escrever em um arquivo de log no qual posso verificar a contagem de verificações de inatividade e depois pule as verificações adicionais até que o site esteja inoperante ou cause verificações mais longas (10 minutos em vez de cada minuto). O que você acha?