Python:获取默认网关的MAC地址

时间:2013-03-14 10:59:55

标签: python linux ip mac-address arp

在Python中有没有快速获取默认网关 MAC地址的方法?

我无法从 Linux 计算机上执行任何 ARP请求我正在运行我的代码,因此它必须直接来自 ARP表

3 个答案:

答案 0 :(得分:2)

您使用的是Linux吗?您可以解析/proc/net/arp文件。它包含网关的HW地址。

答案 1 :(得分:2)

您可以从/proc/net/arp读取并解析内容,这将为您提供已知IP地址的夫妇。

网关可能一直都是已知的,如果不是,你应该ping它,并且会自动生成ARP请求。

您可以在/proc/net/route

中找到默认的gw

答案 2 :(得分:2)

以下DevFS文件将提供此信息:

/proc/net/arp
/proc/net/route

找到0/0作为主机/掩码的路由条目:

Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask            MTU     Window  IRTT                                                       
eth0    00000000        B91A210A        0003    0       0       100     00000000        0       0       0                                                                             

并转换网关字段(它是在little-endian hex ... grr中):

import struct
from IPy import IP
address = IP(struct.unpack('<I', struct.pack('>I', int(i, 16)))[0])
#Converts 'B91A210A' to IP('10.33.26.185')

从那里,你可以在arp表中找到你的默认网关:

IP address       HW type     Flags       HW address            Mask     Device
10.33.26.185     0x1         0x2         e6:92:ec:f5:af:f7     *        eth0

如果没有显示,请发出一次ping,然后再次检查,然后失败。