quinta-feira, 5 de fevereiro de 2015

Usando curl para acessar dados do roteador

Uma das minhas preocupações é a de saber quantas e quais máquinas estão conectadas à minha rede. Para este propósito tenho que acessar o roteador pelo browser, realizar a autenticação preenchendo os campos usuário e senha e por fim entrar na página que fornece o recurso de listar quem está nos meus domínios.

Um bom shell script tem a vantagem de substituir muito bem esta questão da segurança, mas a desvantagem de não entregar a resposta formatada como as páginas HTML neste caso. É claro que os dados podem ser tratados e criar uma página HTML elaborada.

Antes de abordar o comando, exportei os valores da variável pelo arquivo .bashrc por questões de segurança. Você pode usar o nome de login e senha explicitamente na linha de comando que funcionará da mesma forma.

Finalmente, o comando usado é o curl.

curl -b -c -u $user:$pass http://192.168.xx.xx/Status/st_session.htm | grep 192.

A opção -b transfere a informação para o servidor HTTP como um cookie.
A opção -c armazena este cookie.
A opçao -u informa o nome de usuário e senha separados por dois pontos (:).

Em seguida o endereço URL e saída dele é jogada para o grep que busca os IPs que començam com 192 que é o meu intervalo de IPs.

Como a resposta é muito confusa, acrescentei mais alguns comandos:

  • substituição do símbolo "[" por "pular linha"
  • substituição do símbolo "," por espaço em branco.
  • exibir o segundo campo
  • ordenar de forma crescente
  • exibir os resultados distintos

O comando completo é:

curl -b -c -u $user:$pass http://192.168.xx.xx/Status/st_session.htm | grep 192. | tr "[" "\n" | sed 's/,/ /g' | cut -f2 -d" " | sort | uniq

Algumas estatísticas aparecem, mas o essencial está feito. Levo um tempo insignificante em comparação com o uso do browser.

Obviamente será preciso que você substitua os valores da autenticação, as URLs e adeque os comandos para que a resposta fique legível.

Nenhum comentário:

Postar um comentário