从Python中的已知MAC地址获取本地IP地址?

从Python中的已知MAC地址获取本地IP地址?,python,ip-address,hostname,mac-address,Python,Ip Address,Hostname,Mac Address,我正在Raspberry Pi上运行Python脚本,以便从智能插件中获取测量数据。在我的脚本中,我需要写入智能插头的IP地址,以便检索它测量的数据。问题是,我需要能够将智能插头带到不同的地方,而不必每次都对其新的本地IP地址进行硬编码 我有MAC地址,所以我希望有一种简单的方法来添加几行代码,并在Python脚本中从MAC检索本地IP地址。谢谢 本地ip地址不基于MAC地址。路由器使用DHCP为设备提供ip地址。因此,除了更改设置之外,没有办法告诉路由器他必须给你哪个IP 我宁愿尝试在ip上广

我正在Raspberry Pi上运行Python脚本,以便从智能插件中获取测量数据。在我的脚本中,我需要写入智能插头的IP地址,以便检索它测量的数据。问题是,我需要能够将智能插头带到不同的地方,而不必每次都对其新的本地IP地址进行硬编码


我有MAC地址,所以我希望有一种简单的方法来添加几行代码,并在Python脚本中从MAC检索本地IP地址。谢谢

本地ip地址不基于MAC地址。路由器使用DHCP为设备提供ip地址。因此,除了更改设置之外,没有办法告诉路由器他必须给你哪个IP


我宁愿尝试在ip上广播,并在raspberry上收听广播频道中您要查找的消息。

本地ip地址不基于MAC地址。路由器使用DHCP为设备提供ip地址。因此,除了更改设置之外,没有办法告诉路由器他必须给你哪个IP


我宁愿尝试在ip上广播,在raspberry上收听广播频道,以获取您要查找的消息。

您所描述的内容可以通过以下方式完成

一般来说:

从scapy.all导入srp、以太、ARP ans、unans=srpetstrustt=ff:ff:ff:ff/ARPpdst=192.168.1.0/24,超时=2 ip=pkt[ARP].psrc
您所描述的内容可以通过以下方式完成

一般来说:

从scapy.all导入srp、以太、ARP ans、unans=srpetstrustt=ff:ff:ff:ff/ARPpdst=192.168.1.0/24,超时=2 ip=pkt[ARP].psrc
这可以在子流程模块中使用arp命令实现。这是代码。签入窗口

import subprocess
cmd = 'arp -a | findstr "ff-ff-ff-ff-ff-ff" '
returned_output = subprocess.check_output((cmd),shell=True,stderr=subprocess.STDOUT)
print(returned_output)
parse=str(returned_output).split(' ',1)
ip=parse[1].split(' ')
print(ip[1])

这可以在子流程模块中使用arp命令实现。这是代码。签入窗口

import subprocess
cmd = 'arp -a | findstr "ff-ff-ff-ff-ff-ff" '
returned_output = subprocess.check_output((cmd),shell=True,stderr=subprocess.STDOUT)
print(returned_output)
parse=str(returned_output).split(' ',1)
ip=parse[1].split(' ')
print(ip[1])

您可以将NIC置于混杂模式并嗅探ARP数据包。但是,如果您在设备交换机的另一端,您可能永远也看不到这些数据包。一般来说,ARP的工作原理是将IP地址解析为MAC地址,而不是反过来。当设备连接到网络时,是否可以让它播放有关自身的信息?@DanielPryden您好,谢谢您的回复。我对这个很陌生,所以说实话,我真的不明白你所说的广播是什么意思。你能再试一次吗?我不知道这是什么类型的智能插头,我假设是某种电源插座控制装置,所以我不知道可能发生什么,这就是为什么我不写答案的原因。我评论的要点是,您的Raspberry Pi几乎肯定不可能确定另一个设备的IP地址,即使它知道该设备的物理适配器的MAC地址,除非另一个设备正在向网络本身传输数据包。正常的解决方案是将设备配置为发送某种广播UDP数据包,直到有人注意到它并开始通信。也许我的解决方案是从MAC获取IP地址,您可以将NIC置于混杂模式并嗅探ARP数据包。但是,如果您在设备交换机的另一端,您可能永远也看不到这些数据包。一般来说,ARP的工作原理是将IP地址解析为MAC地址,而不是反过来。当设备连接到网络时,是否可以让它播放有关自身的信息?@DanielPryden您好,谢谢您的回复。我对这个很陌生,所以说实话,我真的不明白你所说的广播是什么意思。你能再试一次吗?我不知道这是什么类型的智能插头,我假设是某种电源插座控制装置,所以我不知道可能发生什么,这就是为什么我不写答案的原因。我评论的要点是,您的Raspberry Pi几乎肯定不可能确定另一个设备的IP地址,即使它知道该设备的物理适配器的MAC地址,除非另一个设备正在向网络本身传输数据包。通常的解决方案是将设备配置为发送某种类型的广播UDP数据包,直到有人注意到它并开始通信。也许这就是我从MAC获取IP地址的解决方案