você está aqui: Home  → Arquivo de Mensagens

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 :" {
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>###
  #AJUSTE A SENHA - ESTA QUE ESTA É A DEFAULT DO MODEM (keycode&senh@01)#
  send "keycode&senh@01\r"
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>###
  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

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script