2015-06-15 39 views
0

我需要找到在python中分配了默認路由的網絡接口卡的MAC地址。與Python。 現在我試圖解決方案:獲取具有默認路由的NIC的MAC地址

process = os.popen('wmic nic get MACAddress') 
result = process.read() 
process.close() 
print result.split(" \r\n")[1:-1][0] 

或:

from uuid import getnode as get_mac 
':'.join(("%012X" % mac)[i:i+2] for i in range(0, 12, 2)) 

它的工作時,我只有1個LAN,但是當我有一些WMWARE適配器與某些MAC,有時我得到MAC。

如何獲取默認路由的MAC地址?

+0

在有多個物理間的系統面對,哪一個是「真實」的地址? – larsks

+0

計算機沒有MAC地址,網卡有MAC地址。你將永遠冒着不止一個的風險。你想要默認路由的網卡的MAC地址?請更好地解釋你想要的。 – firelynx

+0

@firelynx是,是默認路由的網卡MAC地址。 – VladutZzZ

回答

0

由於@fyrelinx說沒有「真正」的MAC地址,但可以使用sub process模塊,在OSX下一個命令的作品獲得通過操作系統的命令行的默認路由接口:

>>> subprocess.call(["route", "-n", "get", "default"]) 
    route to: default 
destination: default 
     mask: default 
    gateway: 192.168.0.1 
    interface: **en1** 
     flags: <UP,GATEWAY,DONE,STATIC,PRCLONING> 
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount  mtu  expire 
     0   0   0   0   0   0  1500   0 

然後在this discussion看到你可以得到特定的接口(在我的情況「EN1」)使用netifaces on pypi的MAC地址:

import netifaces as nif 


netifaces.ifaddresses('en1') 
try: 
    if_mac = addrs[nif.AF_LINK][0]['addr'] 
except IndexError, KeyError: 
    pass 
+0

netifaces,是第三方庫嗎? – firelynx

+0

它是,我添加pypi鏈接的更多信息 – gerosalesc