Como alguém já disse antes: nem todo restart é bom.

Mas infelizmente isso é necessário em alguns momentos.  E meu roteador wireless Netgear WGR614 v7 chegou nesse ponto.  Diariamente ele exige um leve "restart" pra poder funcionar direito na parte wireless, do contrário nada consegue se conectar nele: notebook, netbook, xbox360, celulares... 

Deve ser alguma feature chinesa pois todos os produtos de lá padecem do mesmo mal, que sempre começa a aparecer depois de mais de 1 ano de uso.  Deve ser uma estratégia de marketing pra nos forçar a fazer um upgrade.  Igual ao Windows.

Mas voltando ao problema e sua solução, resolvi partir pra um restart automático (restart do bom, pra deixar claro).  Então primeiramente descobri que o roteador faz um restart ao salvar as configurações de wireless.  Em seguinda utilizei o Add-on do firefox, Live HTTP Headers, que ajudou a capturar os dados enviados ao equipamento:


POST /wlg_adv.cgi HTTP/1.1
Host: 192.168.34.1
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Referer: http://192.168.34.1/WLG_adv.htm Authorization: Basic ZnVjazp5b3U= Content-Type: application/x-www-form-urlencoded Content-Length: 60 enable_ap=enable_ap&ssid_bc=ssid_bc&enable_wmm=0&Apply=Apply

O router exige autenticação, o que pode ser visto pela entrada "Authorization: Basic ZnVjazp5b3U=", que não usa criptografia mas um encode de base 64.

Então criei um script pra fazer o trabalho sujo e enviar os mesmos dados ao roteador, mas em Python.


#! /usr/bin/env python
# Script to restart daily my wireless router
# by Helio Loureiro

import httplib
import base64
import urllib
from time import ctime

user = "admin"
passw = "password"
host = "192.168.0.1"

def GetAuth(user = "user", passw = "passwd"):
        auth = user + ":" + passw
        return base64.encodestring(auth)[:-1]

headers = { 
        "Host" : host , 
        "User-Agent" : "Mozilla/5.0  (Python)",
        "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" , 
        "Accept-Language" : "pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3",
        "Accept-Encoding" : "gzip,deflate", 
        "Accept-Charset" : "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
        "Referer" : "http://192.168.34.1/WLG_adv.htm" ,
        "Authorization" : "Basic " +  GetAuth(user, passw),
        "Content-Type" : "application/x-www-form-urlencoded"
        }

post_params = {
        "enable_ap" : "enable_ap" ,
        "ssid_bc" : "ssid_bc",
        "enable_wmm" : "0",
        "Apply" : "Apply"
        }

params = urllib.urlencode(post_params)

web = httplib.HTTPConnection(host)
web.request("POST", "/wlg_adv.cgi", params, headers)
response = web.getresponse()

if (response.status == 200):
        print "[" + ctime() + "] Wireless router restarted successfully"
else:
        print "[" + ctime() + "] Restart FAILED"

data = response.read()
web.close()

Os dados necessários são usuário, senha e IP do roteador wireless (user, passw e host).  Adicionando o script à crontab, o roteador será reiniciado diariamente, aumentando um pouco mais a longevidade de tal produto Chinês.

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.