Você não mencionou o sistema operacional, mas se estiver usando o Windows, algo como isso pode ser útil: JScript para Ping, Renovar IP e Informações de Rede / Reparo .
Este é um script que eu montei para um problema semelhante. Ele faz praticamente exatamente o que você está procurando, pois ele pinga o gateway padrão (que será seu roteador) em um determinado cronograma e, em seguida, toma a ação necessária se o ping falhar.
Nesse caso, os PCs com problema não precisaram ser reinicializados, mas basta ter um ipconfig /release
e ipconfig /renew
com script para recuperar a conectividade. Algo como isso pode funcionar bem para o seu caso também. Se uma reinicialização completa ainda for necessária, esse script poderá ser facilmente modificado para considerar isso também.
Para o Linux, você pode usar um script de shell como este:
#!/bin/sh
ping -c5 192.168.1.1
if [ $? -eq 0 ]; then
echo "ok"
else
reboot
fi
Isso funciona devido ao código de retorno de ping
, conforme detalhado na página do manual :
If ping does not receive any reply packets at all it will exit with code 1. If a packet count and deadline are both specified, and fewer than count packets are received by the time the deadline has arrived, it will also exit with code 1. On other error it exits with code 2. Otherwise it exits with code 0. This makes it possible to use the exit code to see if a host is alive or not.
Depois de substituir 192.168.1.1
pelo endereço do seu roteador, você pode agendar isso para ser executado a cada hora usando o cron. Para reiniciar, você precisará executar isso como root
. Para o Ubuntu padrão, você pode adicionar uma tarefa cron usando:
sudo crontab -e
Para que essa verificação seja executada a cada hora, por exemplo:
00 * * * * /path/to/script/pingRouterCheckReboot.sh
Você precisará garantir que o script seja executável ( chmod +x
).
Se você achar que baixar a interface e fazer o backup é suficiente, você pode fazer isso em vez de ifdown eth0; ifup eth0
. Ou combine abordagens: primeiro faça isso e faça o teste de ping novamente. Se a conectividade ainda não for restaurada, force a medida drástica de uma reinicialização completa.