Такого рода проект был реализован с помощью Bluetooth и раньше, но 30-футовый диапазон и дополнительное потребление батареи заставляют меня хотеть просто пинговать роутер вместо телефонов людей. Я знаю, что маршрутизаторы отслеживают уникальные MAC-адреса для каждого устройства. Я надеялся зарегистрировать адрес каждого телефона и попросить PI периодически проверять маршрутизатор, чтобы обновлять динамическую веб-страницу, чтобы показать, кто дома.
Я хочу знать, есть ли разумный способ получить эту информацию с помощью PI.
networking
wifi
Codiush
источник
источник
Ответы:
Это возможно. Я предлагаю вам предоставить свой скрипт с учетными данными для входа и прочитать страницу, на которой отображается информация. Затем вы можете проанализировать его содержимое и заполнить массив данными, которые вы хотите. Поскольку эти страницы иногда содержат больше информации, такой как даты и время, вы можете создать действительно хороший журнал.
Вот быстрый пример того, как я буду действовать;
На странице вашего роутера вы можете найти что-то вроде следующего:
Итак, мы знаем, что каждое устройство будет перечислено таким образом. И что все адреса MAC будут иметь одинаковую длину.
Сценарий может быть что-то вроде этого;
Этот код нужно настроить, но идея есть. Это цикл, который будет запускать весь файл, чтобы найти все адреса Mac. пока он не достигнет конца файла.
источник
Чтобы отслеживать уникальные mac-адреса на вашем Raspberry Pi, вам нужен инструмент (скорее сервис) под названием arpwatch . Я широко использовал arpwatch в BSD, и он записывает все запросы arp и rarp в системный журнал.
Из системного журнала вы можете анализировать даты и время и MAC-адреса.
ARP работает, и таблица существует только в физической сети (техническое слово: домен коллизий). Когда пакет отправляется в другую сеть, MAC-адрес источника заменяется MAC-адресом маршрутизатора.
При запуске
arp
команды на Raspberry Pi будут перечислены только mac + IP-адреса хостов, которые провели транзакции (IP-связь) с хостом, на котором выполняется команда (Raspberry Pi). Он не будет перечислять mac-адреса других хостов в сети.Другим продвинутым способом было бы использовать Nmap на Raspberry Pi для обнаружения хоста. Вы можете использовать
nmap -sP
для проверки связи всех хостов в сети. Он сообщит вам IP-адреса всех активных хостов в вашей сети. Затем вы можете запустить команду arp, чтобы узнать mac кто активен.источник
Я только что играл с версией командной строки fing . Это делает приличную работу по поиску всего в сети и выплевывая файлы CSV, содержащие:
Согласно предыдущим ответам, некоторые манипуляции с текстом были бы необходимы для того, чтобы перенести содержимое CSV на веб-страницу, и будьте осторожны с тем, что вы публикуете извне.
Я довольно широко использовал версию для Android, и она отлично справляется с поиском всего в моей домашней сети (и довольно забавно играть с ним по общедоступному wifi).
источник
Команда
arp
выдаст вам список устройств, подключенных к сети. Вам нужно будет выполнить некоторые основные операции со строками, чтобы получить нужные данные, но это, безусловно, будет проще, чем пытаться получить информацию самостоятельно.Примечание о функциональности :
Некоторые маршрутизаторы блокируют этот тип функциональности по умолчанию, и ваш может быть настроен как таковой. Если это не работает, покопайтесь в документации, чтобы проверить, как это разрешить.
ПРИМЕЧАНИЕ БЕЗОПАСНОСТИ :
Существуют очень серьезные последствия для безопасности, связанные с наличием веб-сайта, на котором отображается, кто в данный момент находится дома. Пожалуйста, внимательно подумайте о безопасности на месте, и достаточно ли она хороша для рисков.
источник
Это можно сделать, и другие люди предложили несколько хороших методов. Несколько лет назад я написал скрипт на python, чтобы очистить эту информацию от сетевого маршрутизатора и выбросил ее на github. Это можно найти здесь . Это грубо, и, глядя на это сейчас, я бы переделал его несколько по-другому, но это работало для почти той же цели, что и вы, в течение нескольких лет, пока я не переехал.
источник