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.