在Python中有没有快速获取默认网关的 MAC地址的方法?
我无法从 Linux 计算机上执行任何 ARP请求我正在运行我的代码,因此它必须直接来自 ARP表
答案 0 :(得分:2)
您使用的是Linux吗?您可以解析/proc/net/arp
文件。它包含网关的HW地址。
答案 1 :(得分:2)
您可以从/proc/net/arp
读取并解析内容,这将为您提供已知IP地址的夫妇。
网关可能一直都是已知的,如果不是,你应该ping它,并且会自动生成ARP请求。
您可以在/proc/net/route
答案 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,然后再次检查,然后失败。