使用Python和Linux获取远程MAC地址

6 投票
7 回答
24150 浏览
提问于 2025-04-15 17:41

我该如何获取我局域网中远程主机的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

http://code.activestate.com/recipes/347812/

撰写回答