使用Python和Linux获取远程MAC地址
我该如何获取我局域网中远程主机的MAC地址?我正在使用Python和Linux。
7 个回答
2
ARP条目可能永远都不正确。我尝试了好几次去ping一个主机,但用arp -a命令却没有得到它的MAC地址(顺便说一下,Windows的代码没有问题)。
在Linux(以及其他类Unix系统)上,可靠的方法是使用arping或者scapy(可以查看这个链接了解更多:http://en.wikipedia.org/wiki/Arping),然后解析输出结果。下面是我使用的代码。运行arping的时候,你需要是root用户或者使用sudo命令。
cmd = '/sbin/arping -c 1 ' + remotehost
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output, errors = p.communicate()
if output is not None :
mac_addr = re.findall(r'(\[.*\])', output)[0].replace('[', '').replace(']', '')
4
使用这些命令:
arp -n <IP Address>|awk '/<ip address>/ {print $3}'
比如,如果你想要获取192.168.10.1这个地址的MAC地址:
#arp -n 192.168.10.1|awk '/192.168.10.1/ {print $3}'
#00:0c:29:68:8f:a4
4
你可以试着运行命令 arp -a
这里有一些关于获取Mac地址的链接(没有测试过)
在Linux/Unix系统中,可以使用arping工具,
http://www.ibm.com/developerworks/aix/library/au-pythocli/
在Windows系统中,可以通过ctypes使用IP Helper API