sysRestart o roteador Billion ADSL (SNMP v2 ou HTTP)

1

Plano de fundo

Estou acostumado a reiniciar meus servidores em uma base programada. Agora eu quero o mesmo para o meu roteador ADSL.

Esta é a minha razão: Quando ocorre uma falha aleatória, normalmente estou tentando reinicializar os servidores, interfaces e equipamentos relacionados (se possível) como a primeira etapa antes de qualquer outra solução de problemas (por exemplo: alterar configurações, etc). Na verdade, há momentos em que isso corrige o problema (o serviço começa a funcionar conforme o esperado). Isso pode ocorrer porque, quando um sistema demora muito tempo (às vezes, dependendo do software e dos serviços), ele pode ficar sem resposta ou com falha. Pode ser que o software não liberte alguma memória, desbloqueie alguns recursos, etc.

Agora, para alguns serviços que o tempo de inatividade agendado é aceitável durante as horas que não são de trabalho, eu programo a reinicialização automática. Dessa forma, esse tipo de problema aparece com menos frequência. E agora, se ocorrer um problema durante o horário de trabalho, não preciso reiniciar o serviço como um todo. Em vez disso, retomei a solução de problemas depois que eu os reiniciei.

O que temos

Este é um roteador Billion 5000 Series e suporta TELNET, HTTP e SNMP para gerenciamento.

Método Telnet (Atualizado)

É possível reinicializar o roteador via comando telnet:

C:\>telnet 192.168.1.1
    Password:********
    router>set reboot

Tão perto, só precisa de um script que automaticamente faça telnet, envie caracteres de senha e emita o comando ' set reboot '. [A abordagem de usar espera sugerida por SvenW ]

método HTTP

É bom mencionar que eu utilizo um aplicativo software [ 1 ] para monitorar minha velocidade de conexão ADSL e margem de ruído via interface HTTP (o software em si, em vez de um navegador aplicativo, conecta-se, efetua login de forma autônoma e lê os valores da interface HTTP e os exibe em um gráfico!).

Gostaria de saber se é possível alcançar o SysRestart com uma abordagem semelhante (Um script que efetua login automaticamente e clica no botão SysRestart!)

A página de reinicialização:

  • Imagem da página:
  • OHTMLdeorigemdapágina:

    <html><head><metahttp-equiv=Content-Script-Typecontent=text/javascript><metahttp-equiv=Content-Style-Typecontent=text/css><metahttp-equiv=Content-Typecontent="text/html; charset=
    iso-8859-1">
    <link rel="stylesheet" href="../css/style.css" type="text/css">
    <script language="JavaScript"> 
    function doRefresh()
    {
        alert("Reboot Complete");   parent.navigation.location.href = "/navigation-status.html";
        window.location.href = "../status/status_deviceinfo.htm";
    }
    
    function doLoad()
    {
    
         }
    
    </script>
    </head><body onload="doLoad()">
    <FORM METHOD="POST" ACTION="/Forms/tools_system_1" name="System_Restore">
    <table width="760" border="0" align=center cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
      <tr>
          <td height="5" class="light-orange" colspan="5">&nbsp;</td></tr><tr>
        <td width="150" height="30" class="title-main">
        <font color="#FFFFFF">System Restart</font>    </td><td width="10" class="black">&nbsp;</td><td width="150"></td><td width="10"> </td><td width="440"></td></tr><tr>
        <td class="light-orange">&nbsp;</td><td class="light-orange"></td><td class="tabdata"><div align=right>
        <font color="#000000">System Restart with</font>    </div></td><td class="tabdata"><div align=center>:</div></td><td class="tabdata">
            <INPUT TYPE="RADIO" NAME="restoreFlag" VALUE="0" CHECKED>       <font color="#000000">Current Settings</font>       </td></tr><tr>
        <td class="light-orange">&nbsp;</td><td class="light-orange"></td><td class="tabdata">&nbsp;</td><td class="tabdata">&nbsp;</td><td class="tabdata">
            <INPUT TYPE="RADIO" NAME="restoreFlag" VALUE="1">       <font color="#000000">Factory Default Settings</font>       </td></tr><tr>
        <td class="light-orange">&nbsp;</td><td class="light-orange"></td><td width="150">&nbsp;</td><td width="10">&nbsp;</td><td width="440">&nbsp;</td></tr></table><table width="760" border="0" align=center cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
      <tr>
        <td width="160" class="black" height="42" >&nbsp;</td><td width="160" class="orange">&nbsp;</td><td width="440" class="orange">
            <INPUT TYPE="SUBMIT" NAME="Restart" VALUE="RESTART">    </td></tr></table></div></form>
    </body></html>
    

Método SNMP

O roteador também tem suporte para comunidades de leitura e gravação do SNMP v2. Eu pensei que poderia ser possível fazer isso dessa maneira.

Na verdade, por alguma pesquisa eu descobri [ 2 ] que algumas pessoas usam o SNMP para reiniciar seus dispositivos (mas não consigo encontrar um OID para meu roteador para passar por realizar um reset)

Por exemplo, parece que aqueles que possuem um desses dispositivos podem reinicializá-los usando esses OIDs:

'.1.3.6.1.4.1.207.8.4.4.3.2.0',    # Allied Telesyn restart
'.1.3.6.1.4.1.11.2.14.11.1.4.1.0', # Hewlett-Packard hpicfReset
'.1.3.6.1.4.1.9.5.1.1.9.0',        # Cisco CatOS sysReset
'.1.3.6.1.4.1.9.2.9.9.0',          # Cisco IOS tsMsgSend
'.1.3.6.1.4.1.529.9.8.0.0'         # Ascend sysReset

Caminhada SNMP

Usando o SNMP walk, consegui uma lista com mais de quinhentos OIDs, como:

.1.3.6.1.4.1.16972.5.1.1.0
.1.3.6.1.4.1.16972.4.10.0
...etc (568 more)...

Mas atualmente não tenho idéia de como posso escolher um deles (especialmente medo de testar snmp-write neles!).

Mais algumas informações

Alguns outros OID (percorridos) e valores que podem ajudar:

.1.3.6.1.4.1.16972.1.3.0; Trendchip TC3162 T14F7_3.0
.1.3.6.1.4.1.16972.5.1.1.0; www.huawei.com
.1.3.6.1.4.1.16972.1.6.0; Ras Ver:2.10.4.0(UE0.C2C)3.6.0.0   DMT Ver:3.6.0.0

Como você pode ajudar?

  • Sugerindo uma maneira de fazer o script de uma reinicialização via SNMP (Requer encontrar o OID primeiro!?)
  • Sugerindo uma maneira de fazer o script de uma reinicialização via HTTP
  • Sugerindo uma maneira de fazer o script de um reinício via telnet
  • Sugerindo uma maneira de fazer o script de uma reinicialização (de qualquer outra maneira!)

FootNotes:

por F.I.V 23.12.2012 / 13:16

1 resposta

0

Sem um arquivo MIB adequado para o SNMP, sua melhor opção será encontrar algum comando telnet que faça a reinicialização e talvez usá-lo com a ajuda da ferramenta expect ou usar algo como curl para usar a interface da web .

O uso do curl pode exigir várias chamadas para o primeiro login e salvar os cookies de uma sessão e, em seguida, fazer a reinicialização real.

Eu me pergunto - você tem um problema real com o dispositivo que tenta consertar com uma reinicialização regular? Se não, não vejo o motivo para isso.

Editar:

Exemplo básico para um script esperado. Chame-o com scriptname hostname password ou altere as atribuições de variáveis para conter o nome do host e a senha reais:

#!/usr/bin/expect 

set timeout 15
set hostname [lindex $argv 0] 
set password [lindex $argv 1] 

spawn telnet $hostname 

expect "Password:" 
send "$password " 
expect "router>" 
send "set reboot "
    
por 23.12.2012 / 13:47

Tags