2013-03-14 90 views
2

Python中有沒有什麼快速的方法來獲得MAC地址默認網關Python:獲取默認網關的MAC地址

我不能作出任何ARP從我跑在我的代碼的Linux 請求,因此它具有直接從ARP表來。

+0

你應該說你正在使用的操作系統。 – LtWorf 2013-03-14 11:10:03

+0

行動。抱歉。現在添加。 – 2013-03-14 11:14:13

回答

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十六進制... 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 

如果它沒有顯示出來,問題單平,然後再檢查,再失敗。

2

您是否使用Linux呢?你可以解析/proc/net/arp文件。它包含網關的硬件地址。

+0

只是出於好奇,會在Mac OS相同的工作? – 2014-08-05 13:38:27

+1

不知道有關的MacOS ......看看[此帖](http://stackoverflow.com/questions/6782658/how-to-get-default-gateway-in-mac-osx)。 – liouk 2014-08-06 14:08:12

2

您可以從/proc/net/arp讀取和解析的內容,會給你已知IP-MAC地址的夫婦。

網關大概知道在任何時候,如果你不應該ping到它,以及一個ARP請求將被自動生成。

你可以找到/proc/net/route

+0

哦,好的。我以爲有一些圖書館已經爲我做了解析工作。好。 :) – 2013-03-14 11:20:42