Ранее когда мы конфигурировали openwrt butler был выбор что использовать: iw или arp. После подключения mr3020 в подсеть телефон также отдавал свой мак-адрес только его нельзя было вычислить посредством утилит для беспроводной сети. Пришлось переделывать на arp.
Казалось бы ничего сложного вводишь arp -a и все готово. Но нет. Как оказалось ключ "-a" не распознавался, видимо из-за локалей. Если попробовать
видно, что ключевой строке
Ну а теперь можно переделать весть скрипт:
Казалось бы ничего сложного вводишь arp -a и все готово. Но нет. Как оказалось ключ "-a" не распознавался, видимо из-за локалей. Если попробовать
LC_ALL=C arp -a $ipAddress | awk '{print $4}'то все а ажуре. Да вот только это не не вставить в скрипт. Ладно, если по гуглить, то можно найти как сделать скрипт для поиска всех ip подключенных клиентов.
видно, что ключевой строке
awk ' $1~/[[:digit:]]/ {print $1}' /proc/net/arpиспользуется какой то print $1. Очено похоже на скрипт с локалями - там выводится 4я колока. Изменяем на 4ю колонку и вуаля:
awk ' $1~/[[:digit:]]/ {print $4}' arpработает.
Ну а теперь можно переделать весть скрипт:
#!/bin/sh ###your smatphone mac#### master="a1:b2:c3:d4:e5:f6" res=0 maclist=`awk ' $1~/[[:digit:]]/ {print $4}' /proc/net/arp` # for each mac address in that list... for mac in $maclist do if [ $mac == $master ]; then res=1 fi done echo $resи теперь смарт успешно находится даже если находится в подсети другого роутера :)