Esta dica tem o objetivo de testar o seu link de Internet e caso ele não esteja online, automaticamente um outro script acessa o seu modem D-Link (no meu caso o DI-524) via telnet e faz o restabelecimento da conexão. Os testes foram feitos usando o Debian e o roteador D-Link 524, mas isso não impede que seja usada também com outras distribuições e outro equipamento (roteador).
Bom, esta é minha primeira manifestação aqui no VOL e espero que seja a primeira de muitas outras contribuições para a comunidade.
Abaixo segue um link que tem as senhas padrão de Telnet para diversos tipos de roteador:
Bom, vamos ao que interessa. Primeiramente você deve baixar o pacote
expect, por conta da necessidade do script de reconexão.
sudo apt-get install expect
Script test_connection
Vamos criar um script que faça o teste de conexão. Segue o conteúdo do script:
#!/bin/bash
### Verifica se a internet está no ar, se não estiver, executa o comando "reconnect_router"
if ! ping -c 7 www.google.com.br ; then
#Internet está fora
/etc/init.d/reconnect_router
fi
exit
Salve o script em /etc/init.d.
Script reconnect_router
Abaixo o conteúdo do script
reconnect_router, que terá o papel de acessar o roteador e reiniciar a conexão.
Obs.: Lembrando que para usar este script é necessário o pacote "expect".
#!/usr/bin/expect
spawn telnet ip_do_roteador> (Ex.: 192.168.0.1)
expect "login: "
send "Alphanetworks\n"
expect "Password: "
send "wrgg15_di524\n"
expect "# "
send "cd /var/run/\n"
expect "# "
send "sh wan_stop.sh\n"
expect "# "
sleep 5
send "sh wan_start.sh\n"
expect "# "
sleep 5
send "exit\n"
Salve o script em /etc/init.d.
Para finalizar devemos adicionar o script "test_connection" ao crontab para que ele verifique periodicamente a conexão com a internet.
Utilizei a política abaixo, mas cada um tem sua necessidade específica. Fique a vontade para utilizar da forma que desejar.
00-59/1 * * * * /etc/init.d/test_connection
Traduzindo a regra: testar a conexão todos os dias do ano e a cada minuto, 24hs por dia, fazer o teste de conexão.
Lembrando que ambos os scripts (test_connection e reconnect_router) devem estar no diretório /etc/init.d (por convenção).
Bom, finalizamos por aqui esta dica e espero que vocês tenham gostado. Abraços!