2012-12-13 58 views
4

如何在python中獲取我的mac地址:\ x ## \ x ## \ x ## \ x ## \ x ## \ x ##?
我想構建一個以太網頭,並自動生成源硬件地址。在python中獲取MAC地址並追加到字符串

我使用uuid.getnode()獲取MAC地址作爲48位整數。我怎樣才能轉換它,所以我可以將它附加到已經以這種格式的字符串?
ie:eth_header = "\xff\xff\xff\xff\xff\xff" + magicconvert(uuid.getnode())

回答

2

我敢肯定有很多方法,這個怎麼樣:

import uuid 
hdr="\xff"*6 
mac=uuid.getnode() 
txt="%012X"%mac 
as_b=[int("".join(x),16) for x in map(None,*(txt[::2],txt[1::2]))] 
as_s="".join(chr(b) for b in as_b) 
out=hdr+as_s 
3

用戶nneonneo在9月13日回答了這個問題。相信他:

'-'.join('%02X' % ((uuid.getnode() >> 8*i) & 0xff) for i in reversed(xrange(6))) 

編輯這個給你的格式化你想要的字符串。

我還想借此機會說「uuid.getnode()」很可能會返回一個隨機值,或者它可能會獲取系統上任何隨機網絡接口的MAC地址。從我可以告訴的是,真的沒辦法知道。

0
from itertools import izip 
import uuid 

token = "\\x" 
mac_address = "%012x" % uuid.getnode() 
iter_mac_address = iter(mac_address) 
"%s%s" % (token, token.join(a+b for a, b in izip(iter_mac_address, iter_mac_address)))