Olá,
acabo de produzir um código incrivelmente simples para monitorar meu roteador Linksys.
O problema era o seguinte: meu roteador trava vez ou outra. Ele continua respondendo pacotes Ping ICMP, mas barra toda e qualquer conexão HTTP de saída. Conexões abertas não são fechadas, mas nenhuma nova é aberta. Nenhum pacote UDP passa.
Encontrei uma pista na net: o limite de conexões TCP dele é 512. Eu já havia aumentado para 1024, mas como naquele momento havia uns 5 ligados em casa, é bem possível que esse limite tenha sido atingido. E o que acontece quando ele atinge o limite? Segundo um post no forum do DD-WRT, ele congela, exatamente como eu descrevi acima.
Agora a diversão do Vinicius: encontrar qual estação (e o qual programa) está abrindo mais de 1k conexões TCP. Apelei rapidamente pro PowerShell, com uma linha. Meu roteador tem uma página de status que informa quantas conexões estão abertas no momento e quais são os hosts das duas pontas. Basta então programar ele para ir lá, autenticar, ler o valor e plotar na tela. Veja como ficou:
PS C:\Users\xis> $wc = new-object system.net.webclient; $wc.credentials = get-credential
PS C:\Users\v-vixavi> for($true) { $wc.DownloadString('http://192.168.1.1/Status_Conntrack.asp')
–match '</div>\n(\d{2,3})\n</div>' | out-null; $matches[1]; sleep 10}
Feio. Mas para um teste simples, funciona. Espero que alguém um dia precise disso. =)
Lembre-se. Este código é certificado pelo Works on My Machine Program.
Comentários
Postar um comentário