Modificação do script de shell necessária para mostrar o IP e o host DD-WRT

1

Estou executando o DD-WRT v.3.0 em meu roteador Linksys EA6500 e tenho o seguinte script em execução para me dar acesso ao endereço MAC WiFi que está conectado no momento ao roteador:

echo "#!/bin/ash" > /tmp/getmac.sh
echo 'echo { > /tmp/www/list.html' >>/tmp/getmac.sh
echo "for i in \$(arp | awk '{print toupper(\)}'); do echo \$i, >> /tmp/www/list.html; done" >>/tmp/getmac.sh
echo 'echo } >> /tmp/www/list.html' >>/tmp/getmac.sh
chmod +x /tmp/getmac.sh
/tmp/getmac.sh

Eu posso visitar o link e ele mostrará uma lista de endereços MAC WiFi que estão atualmente conectados ao roteador:

Exemplo:

{ 01:81:18:3d:49:5e, 04:10:87:8c:47:9a, }

No entanto, gostaria de modificar isso para incluir também o IP ADDRESS e também o NOME DO DISPOSITIVO .

Eu encontrei este no site do DD-WRT, mas ao executar o comando e verificar o diretório, eu não vejo em qualquer lugar.

 # mkdir -p /tmp/www
 while [ 1 ];
  do
  wl assoclist | awk '{print tolower($2)}' > /tmp/assocLIST
  # echo "<meta http-equiv="refresh" content="10"><b>Hostnames and IP addresses of WLAN clients</b> (last update: $(date))<p>" > /tmp/www/wlan.html
  while read assocLINE
   do
     dumpleases | awk '/'"$assocLINE"'/ {print "Hostname: " $1, "MAC: " $2, "IP: " $3}'
   # echo "<br>";
        done < /tmp/assocLIST     # >> /tmp/www/wlan.html
  sleep 10;
done;

Eu gostaria que saísse assim:

{
    "data": [{
        "IP": "192.168.1.55",
        "MAC": "01:81:18:3d:49:5e",
        "HOST": "DavidsAndroidPhone"
    }, {
        "IP": "192.168.1.79",
        "MAC": "04:10:87:8c:47:9a",
        "HOST": "BobsIphone"
    }]
}

Como posso modificar meu primeiro script que postei para incluir o IP e o NAME ?

ATUALIZAÇÃO

Quando eu faço o comando arp no PuTTYtel eu recebo as seguintes informações:

DD-WRT login: root
Password:
==========================================================

     ___  ___     _      _____  ______       ____  ___
    / _ \/ _ \___| | /| / / _ \/_  __/ _  __|_  / / _ \
   / // / // /___/ |/ |/ / , _/ / /   | |/ //_ <_/ // /
  /____/____/    |__/|__/_/|_| /_/    |___/____(_)___/

                       DD-WRT v3.0
                   http://www.dd-wrt.com

==========================================================


BusyBox v1.24.1 (2016-03-07 05:09:22 CET) built-in shell (ash)

root@DD-WRT:~# arp
android-17af243062d3eb6b (192.168.1.144) at 00:ae:fa:4a:3a:4c [ether]  on br0

Atualmente, o script que estou executando (getmac.sh) analisa isso e obtém apenas isto:

{ 00:ae:fa:4a:3a:4c, }

Então, como posso modificar o script para obter mais informações que estou procurando no layout JSON adequado?

UPDATE 2

Ok, eu tenho este código aqui:

arp | awk 'BEGIN { print "{" } { print "MAC:" $4 ", IP:" $2 ", HOST:" $1} END { print "}" }'

Que gera o seguinte:

{
MAC:00:ae:fa:4a:3a:4c, IP:(192.168.1.144), HOST:android-17af243062d3eb6b
}

Agora, como acima, como posso remover o ( e o ) do IP e formatá-lo no formato JSON adequado? Eu tentei o awk -F '(' mas isso não parece funcionar.

    
por StealthRT 20.03.2016 / 06:24

1 resposta

1

Ok, isso vai precisar de algum trabalho, mas para começar a verificar quais são os adaptadores com

ifconfig 

Em seguida, execute:

wl -i ethX assoclist 

até encontrar o que o ddwrt está usando para o seu wifi. Você ainda tem que mexer um pouco para obter sua estrutura de saída exata, mas o script original (adaptador plus -i) deve funcionar.

    
por 30.04.2016 / 21:32