você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Script para MODEM ALCATEL

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!

net.pl (Testa e caso houver necessidade, reinicia. Ajuste o path para o reset)

#!/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);
                    }
                }
        }      

reset (usado para reinicar o modem, lembre-se de ajustar a senha.)

#!/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 br


Veja a relação completa dos artigos de Diego Almeida