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