Verificando se um site específico está ativo
Primeiro, vários bons serviços de monitoramento on-line estão disponíveis. Para escolher um, Pingdom inclui conta gratuita para monitorar um alvo. (Disclaimer: Eu sou não afiliado com Pingdom de qualquer forma).
Em segundo lugar, usar wget --spider
para o seu próprio script é uma boa ideia. Você obterá alguns falsos positivos quando o computador estiver inoperante ou quando o servidor DNS não estiver funcionando. Verificar o código de retorno é uma maneira direta de implementar isso:
wget --spider --quiet http://example.com
if [ "$?" != 0 ]; then
echo "Website failed!" | mail -s "Website down" [email protected]
fi
Mais uma vez, há falhas nessa abordagem. Se o seu provedor tiver armazenado em cache seu registro DNS, mas o servidor DNS estiver inativo, outros não poderão acessar seu site, mesmo que o monitoramento diga que está tudo bem. Você pode escrever uma pequena solução alternativa com host
, por exemplo, host example.com <your dns server IP>
. Isso retornará um erro se o servidor DNS não estiver respondendo, mesmo se o OpenDNS ou o servidor DNS do seu provedor funcionar bem.
Verificando se a internet está funcionando
Não existe uma maneira realmente fácil de lidar com isso em todos os casos.
Por exemplo, você pode executar ping -c1
em vários sites conhecidos (por exemplo, www.google.com, facebook.com e ping.funet.fi) e verificar códigos de retorno para determinar se algum destino está acessível. Você pode verificar automaticamente o código de retorno usando a variável $?
. O parâmetro -c1
está limitando o número de pacotes de ping para um.
Você pode encontrar problemas com alguns wifis públicos quando houver um gateway de login que redirecione todos os pings e solicitações HTTP. Em caso afirmativo, você pode receber respostas de ping e códigos de status HTTP sem erro, mesmo quando não puder acessar outros sites.
Se você quiser verificar o estado do cabo, você pode usar
sudo ethtool eth0
Da saída (trecho):
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
Link detected: yes
No entanto, isso não está dizendo se você realmente tem conectividade ou não, apenas se o cabo está conectado e alguma coisa está do outro lado.