Необходимая модификация скрипта оболочки для отображения IP и хоста DD-WRT

Я запускаю DD-WRT v.3.0 на моем маршрутизаторе Linksys EA6500, и у меня есть следующий скрипт, который позволяет мне получить доступ к MAC-адресу WiFi, который в настоящее время подключен к маршрутизатору:

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, и он покажет мне список MAC-адресов WiFi, которые в настоящее время подключены к маршрутизатору:

Пример:

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

Тем не менее, я хотел бы изменить это, чтобы также включить IP ADDRESS, а также ИМЯ УСТРОЙСТВА .

Я нашел это на сайте 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 ?

ОБНОВИТЬ

Когда я делаю команду arp в 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) root@DD-WRT:~# 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?

ОБНОВЛЕНИЕ 2

Хорошо, у меня есть этот код здесь:

 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 '(' но это, похоже, не работает.

  • Нельзя использовать псевдоним в скрипте, даже если я его определяю чуть выше!
  • Shellscript для удаления определенных тегов в файле HTML
  • Синтаксическая ошибка: "(" неожиданное (ожидающее слово) - в моем сценарии bash
  • mv: не обнаружено, когда выполняется из сценария, который изменяет переменную PATH
  • команды curl и grep выводятся в новую переменную
  • два файла .csv сравниваются с помощью awk
  • Как проверить, присутствует ли файл, начинающийся с определенного префикса, в каталоге в сценарии оболочки
  • динамическое отображение текущего процесса?
  • One Solution collect form web for “Необходимая модификация скрипта оболочки для отображения IP и хоста DD-WRT”

    Хорошо, это потребует некоторой работы, но чтобы начать проверять, что такое адаптеры с

     ifconfig 

    Затем выполните:

     wl -i ethX assoclist 

    пока вы не найдете тот, который ddwrt использует для вашего Wi-Fi. Вам все равно придется немного потрудиться, чтобы получить точную структуру вывода, но исходный скрипт (плюс -i-адаптер) должен работать.

    Linux и Unix - лучшая ОС в мире.