Ранее когда мы конфигурировали 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
и теперь смарт успешно находится даже если находится в подсети другого роутера :)