Привет всем Я запускаю DD-WRT v.3.0 на моем маршрутизаторе Linksys EA6500, и у меня есть следующий скрипт, который позволяет мне получить доступ к MAC-адресу WiFi, который в настоящее время подключен к маршрутизатору:DD-WRT Сценарий оболочки Wifi IP и добавление имени
echo "#!/bin/ash" > /tmp/getmac.sh
echo 'echo { > /tmp/www/list.html' >>/tmp/getmac.sh
echo "for i in \$(arp | awk '{print toupper(\$4)}'); 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
я могу посетить http://192.168.1.1/user/list.html и покажет мне список WiFi MAC-адрес, который в данный момент подключен к маршрутизатору:
Пример:
{ 01:81:18:3d:49:5e, 04:10:87:8c:47:9a, }
Тем не менее, я хотел бы изменить это, чтобы также включить адрес IP ADDRESS, а также НАЗВАНИЕ УСТРОЙСТВА.
Я нашел this на сайте DD-WRT, но при запуске команды и проверке каталога я ничего не вижу.
# 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;
Я хотел бы, чтобы вывести следующим образом:
{
"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"
}]
}
Может ли мне помочь в изменении моего первого сценария я отправил включить IP и NAME?
UPDATE
Когда я делаю команду агр в PuTTYtel я получаю следующую информацию:
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)
[email protected]:~# arp
android-17af243062d3eb6b (192.168.1.144) at 00:ae:fa:4a:3a:4c [ether] on br0
Так в настоящее время сценарий я бегу (getmac.sh) смотрит на это и получает только это:
{ 00:ae:fa:4a:3a:4c, }
Так что, учитывая, что, как я могу изменить сценарий, чтобы получить больше информацию, которую я ищу в правильной компоновке JSON?
UPDATE 2
Ok У меня есть этот код здесь:
arp | awk 'BEGIN { print "{" } { print "MAC:" $4 ", IP:" $2 ", HOST:" $1} END { print "}" }'
которая выводит следующее:
{
MAC:00:ae:fa:4a:3a:4c, IP:(192.168.1.144), HOST:android-17af243062d3eb6b
}
Теперь, учитывая, что выше, как я могу удалить ( и ) от IP и отформатировать его в опоре форма JSON? Я пробовал awk -F '(', но это не работает.
Э-э, почему вы генерируете сценарий каждый раз? На ваш вопрос было бы намного проще ответить, если бы вы просто разместили сгенерированный скрипт, независимо. – tripleee
Сценарий с сайта будет генерировать файл '/ tmp/www/wlan.html', если вы раскомментировали эти строки. – tripleee
... Хотя это немного неуклюжий с временным файлом. Без выборочного вывода из 'wl assoclist' и' getleases' не совсем понятно, что он делает. – tripleee