Как обнаружить мобильное устройство при подключении к домашней сети Wi-Fi?

Каким будет лучший способ распознать сервер, когда конкретное мобильное устройство (сотовый телефон, iPad и т. д.) подключается к сети (конечно, без проводов)?

В качестве примерной ситуации у человека есть домашняя сеть Wi-Fi, правильно настроенная на его мобильном телефоне. Когда он попадает в зону действия маршрутизатора, он будет подключаться (ничего нового об этом). После подключения к этому маршрутизатору его домашний сервер запустит определенную программу (или бросит уведомление, напишет файл и т. Д.).

Я думал, что возможным решением будет сетевое пользовательское «веб-приложение», которое будет запущено с телефона, чтобы сервер узнал, что страница была вызвана. Однако, если это можно сделать, когда телефон подключается автоматически, это было бы лучше.

Любые мысли или альтернативные решения были бы очень благодарны, поэтому заранее спасибо!

8
задан 28 May 2012 в 04:20

63 ответа

Я написал сценарий, который делает что-то подобное, используя arp-scan и статический IP-адрес на iPhone.

Вы можете найти здесь код: https://github.com/blackairplane/pydetect

Его нужно очистить, поскольку я новичок в Python, но я думаю, что это иллюстрирует концепцию.

0
ответ дан 15 August 2018 в 19:10

Лучший способ, который я могу придумать, - дать указанному устройству статический IP-адрес и использовать простой скрипт для ping устройства каждые X секунд и запускать вашу программу / уведомление.

Замечания: Многие телефоны не будут подключаться к сети Wi-Fi, пока не проснутся от сна. Ваш скрипт должен будет определить разницу между телефоном, который будет спать, и телефоном, выходящим из дома, возможно, учитывая время суток. После этого, когда скрипт запускает программу для запуска или появляется уведомление, тривиально.

1
ответ дан 15 August 2018 в 19:10
import subprocess

if __name__ == '__main__':
    while True:
        sleep(5)
        p = subprocess.Popen("arp-scan -l | grep xx:xx:xx:xx:xx:xx", stdout=subprocess.PIPE, shell=True)
        (output, err) = p.communicate()
        p_status = p.wait()
        if output:
            print "Yay, the devine is connected to your network!"
        else:
            print "The device is not present!"

Таким образом, вы можете сканировать MAC-адрес устройства:)

3
ответ дан 15 August 2018 в 19:10

Другие вопросы по тегам:

Похожие вопросы: