De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Diego Almeida
Data de Publicação: 11 de Junho de 2004
Desenvolvi os script abaixos num momento de desespero que estava passando na empresa em que trabalho, na qual o ADSL vivia caindo, porém as quedas as vezes só eram superadas quando o modem fosse desligado e ligado novamente. Enquanto eu estivesse dentro da empresa não havia problema porém nos finais de semana isso também chegou a acontecer.. e então precisava de uma coisa que testasse a conexão (resolvi fazer isso usando o ping e perl). Se houvesse falha na conexão, realizasse o reset tanto do pptp quanto do modem (usando o expect e uma dica passada aqui mesmo a um tempo atrás).
Segue então os script para isso, com certeza não esta organizado e a lógica dele poderia ser melhorada , então esse é um serviço pra quem estiver com um tempinho disponível!
#!/usr/bin/perl -w #SCRIPT PARA RECONECTAR MODEM ALCATEL STP #Melhore ele a vontade! #Desenvolvido as pressas em 20/05/2004 por DiegoAlmeida :D #Efetua um ping no DNS principal do terra $ping1 = ``fping -r 1 200.176.2.10``; $ping1aa = substr("$ping1",-6); $ping1aa = "G $ping1aa"; if ("$ping1aa" eq "G alive\n"){ exit(0); } #Se responder sai agora mesmo , caso contrário tenta ver se consegue chegar #até o www.registro.br else { $ping2 = ``fping -r 1 www.registro.br``; $ping2a = substr("$ping2",-6); $ping2a = "G $ping2a"; if ("$ping2a" eq "G alive\n"){ exit(0); } #Mesma coisa de antes..porém da 5s para refletir um pouco else { sleep(5); $ping3 = ``fping -r 1 www.uol.com.br``; $ping3a = substr("$ping3",-6); $ping3a = "G $ping3a"; if ("$ping3a" eq "G alive\n"){ exit(0); } #Realmente a conexão não esta legal,o modem será reiniciado else { printf "ERRO NA CONEXAO..RESETANDO MODEM \n"; #Como uso o pptp , primeiro fecho ele e depois do o restart ``killall -9 pptp ; killall -9 pppd``; #reiniciado o modem #INDICAR ONDE ESTA O RESET!!! $lag = ``/root/modem/reset``; #Se desejar ver o que houve no contato com o MODEM, descomente a linha a seguir #printf "$lag"; printf "ESPERANDO MODEM VOLTAR...Aguarde 60s \n"; #Espera 60s até o modem alinhar sleep(60); printf "EFETUANDO CONEXAO \n"; #Então,com o modem alinhado , efetua a conexão denovo. ``pptp 10.0.0.138&``; exit(0); } } }
#!/usr/bin/expect -f #Se o ip do modem for o 10.0.0.138,deixe como esta. spawn telnet 10.0.0.138 set timeout 5 expect { "ser :" { #send_user "Fazendo o login.." send "root \r" exp_continue } sleep 3 "assword :" { ####################################################################### #AJUSTE A SENHA - ESTA QUE ESTA É A DEFAULT DO MODEM (keycode&senh@01)# send "keycode&senh@01\r" ####################################################################### send ":system reboot\r" exp_continue } "=>" { send_user "ok" send "system\r" send "reboot\r\n" } timeout { #Como o modem parou , a saída é do timeout mesmo. send_user "Pronto... \n" } }
E é isto, qualquer novidade que adicionar aos scripts, se achar legal mande para mim , <diego sl (a) email com br>.
Diego Almeida GnuPGKey at search.keyserver.net diego dot sl at email dot com dot brError: No site found with the domain 's2.dicas-l.com.br' (Learn more)