LINUX.ORG.RU
ФорумAdmin

Мониторинг наличия мобильного подключенного к сети Wi-Fi

 , ,


0

1

Коллеги, добрый день!

Подскажите как можно организовать такую задачу. Есть локальная сеть с Wi-Fi. Необходимо понимать наличие человека с телефоном в сети с разрешением около 20-25 минут. Нужно это для автоматического отключения видеонаблюдения когда этот человек с телефоном на объекте (подключен к Wi-Fi) и включать его когда он ушел с объекта. Сервер видеонаблюдения вполне может довольствоваться файликом. Есть файлик - не писать, нету файлика - писать. Вот только вопрос, каким образом отлавливать, что телефон зарегистировался в сети WiFi?

По идее, можно как-то пингом пробивать через равные промежутки времени (25 минут). Если пингуется, то создавать файлик, если не пигуется, то не создавать. Но в сети DHCP и очень не хочется резирвировать конкретный адрес под конкртеное устройство. Но даже если и зарезервировать, то ума не пойму как понять, что пропинговалось? В Windows там можно по ErrorCode понимать, а в Ubuntu как?

Наиболее надежным способом, на мой взгляд, был бы вариант с неким пингом на мак-адрес. Тут уж пусть есть или нет того самого айпишника - все равно. Но arping в упор не хочит пинговать ни один из маков, что у меня в сети. IP пингует, а на мак фиг :)

Буду рад идеям. Спасибо!


в джутовый мешок залезь, сквозь дырочки все видно, но тебя никто не узнает

anonymous
()
Ответ на: комментарий от anonymous

в джутовый мешок залезь, сквозь дырочки все видно, но тебя никто не узнает

Проблема не в идентификации, а в ненужном количестве ложных срабатываний.

kvv213
() автор топика
Ответ на: комментарий от voltmod

Утилита iw она по моему везде одинаковая.

Да, но вроде бы с ее помощью поднимают Wi-Fi интерфейс, а его на сервере-то нету. Она на роутере. У меня вобще ничего не выводит, кроме хелпа.

kvv213
() автор топика

а получать с wifi роутера список подключенных маков?

anonymous
()

можно попробовать написать скрипт, который по telnet'у будет заходить на роутер и забирать статистику Wi-Fi, скидывая IP или mac-адреса для пинга. пинг можно мониторить по ответу через grep-фильтр.

еще вариант, машину с линуксом постоянно держать в Wi-Fi сети и переодически сканировать nmap'ом весь диапазон DHCP пула или «iwlist wlan0 scan». а дальше опять скриптами отсеивать и в зависимости от результатов создавать файл или удалять.

sprutos ★★★
()
Последнее исправление: sprutos (всего исправлений: 2)
Ответ на: комментарий от axelroot

man iwlist

Это не поможет, ибо: vlad@J1800:~$ iwlist scanning teredo Interface doesn't support scanning.

lo Interface doesn't support scanning.

tun Interface doesn't support scanning.

p1p1 Interface doesn't support scanning.

Ну нет у меня на сервере Wi-Fi, не было и не будет :)

kvv213
() автор топика
Ответ на: комментарий от sprutos

можно попробовать написать скрипт, который по telnet'у будет заходить на роутер и забирать статистику Wi-Fi, скидывая IP или mac-адреса для пинга. пинг можно мониторить по ответу через grep-фильтр.

У меня в качестве роутера ZyXel 6101 навороченный. Там операционка на основе ZySH. Телнетом-то зайти можно, но ни одну известную мне команду он не понимает. Информацию по списку команд мне найти не удалось (если кто обладает сим знанием и поделится, буду рад).

Пока решил сделать таким образом. Все же прописать статику на смартфоны на роутере, и пинговать их обычным пингом с сервера. По крайней мере это работает (пингуется, даже когда смартфон лежит отдыхает).

Осталось только сообазить как выловить нужное событие и построить логику в скрипте, типа есть мобильный - делай то, нету делай се.

kvv213
() автор топика
Ответ на: комментарий от kvv213

Пока запилил такой скрипт, вроде работает:

echo "Start scanning"

#Initializing variables
here=0
masters_ip=('192.168.0.40' '192.168.0.23' '192.168.0.33' '192.168.0.47')
masters_na=('Vlad SG S5Duos' 'Michael Lenovo' 'Michael Lenovo' 'Irina LG')

#looking for the presense of the masters
for (( i=0; i<${#masters_ip[@]}; i++)) do
    echo ""
    echo ${masters_ip[${i}]} " -- " ${masters_na[${i}]}
    ping_result=`ping -c 1 ${masters_ip[${i}]}`
    if [ "`echo $ping_result | grep "ttl="`" != "" ] 
    then
	echo "On the network!"
        let "here+=1"
    else
	echo "Missing from the network!"
    fi
#    echo `ping -c 1 ${masters_ip[${i}]}`
done

#calling for action
echo ""
if [ here==0 ] 
then
    echo "Deleting file with presence"
else
    echo "Creating file with presence"
fi

#finishing
echo ""
echo "Ends scanning. Found masters="$here

Наличие ответа по пингу определяется по наличие фразы ttl= в результатах его работы.

Пока файлы решил не мутить, может быть выйдет через http-триггер сервера видеонаблюдения. Только надо понять как http дергать, пока единственная идея это wget.

kvv213
() автор топика
Ответ на: комментарий от kvv213

Ааа, поможите от вскипания мозга :)

В терминале все срабатывает. Но в кроне выдает ошибку.

Ругается вот на такие строчки:

#Masters and masters devices enumeration
masters_ip[0]='192.168.0.40'
masters_na[0]="Vlad's SG S5Duos"

А ругается вот так вот:

/bin/WiXe.sh: 14: /bin/WiXe.sh: masters_ip[0]=192.168.0.40: not found
/bin/WiXe.sh: 15: /bin/WiXe.sh: masters_na[0]=Vlad's SG S5Duos: not found
Почему?

kvv213
() автор топика
Ответ на: комментарий от kvv213

Кажись, разум возмущенный нашел косяк. В начало скрипта надо было прописать #!/bin/bash <- путь к «интерпретатору»

Вроде заработало :) и из-под crontab

kvv213
() автор топика
18 сентября 2015 г.
Ответ на: комментарий от sprutos

Сейчас нету 6101, вместо него стоит другой зухель, но в принципе работает и моя схема с пингами. Более того, они универсальна :)

kvv213
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.