Получить локальный IP-адрес от известного MAC-адреса в Python? - PullRequest
0 голосов
/ 07 мая 2019

Я запускаю скрипт Python на Raspberry Pi, чтобы получить данные измерений из Smart Plug. В моем скрипте мне нужно написать IP-адрес Smart Plug, чтобы я мог получить данные, которые были измерены. Проблема в том, что мне нужно иметь возможность использовать Smart Plug в разных местах без необходимости каждый раз жестко кодировать его новый локальный IP-адрес.

У меня есть MAC-адрес, поэтому я надеюсь, что есть «простой» способ добавить пару строк кода и извлечь локальный IP-адрес из MAC (?) В скрипте Python. Спасибо!

Ответы [ 3 ]

0 голосов
/ 07 мая 2019

То, что вы описываете, может быть достигнуто путем создания пакета ARP для получения этой информации .

Обычно что-то вроде:

from scapy.all import srp, Ether, ARP ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"),timeout=2)

ip = pkt[ARP].psrc
0 голосов
/ 08 мая 2019

Извините, у меня недостаточно репутации, чтобы комментировать. Вы можете проверить наличие дубликатов, я ответил на тот же вопрос несколько дней назад.

Решение

0 голосов
/ 07 мая 2019

Локальный IP-адрес не основан на MAC-адресе. Маршрутизатор использует DHCP для предоставления устройству IP-адреса. Таким образом, нет способа сообщить маршрутизатору, какой IP-адрес он должен предоставить вам, кроме изменения настроек.

Я бы лучше попробовал транслировать ip и на малине прослушать на широковещательном канале сообщение, которое вы ищете.

...