
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, celulare
s...
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.

