取回多網卡 IPV6, IPV4 的 MAC

 

以下參考至為 http://wiki.alarmchang.com/index.php?title=Python_%E5%9C%A8_Windows_%E4%B8%8A%E9%9D%A2%E6%8B%BF_MAC_address

常用取得MAC address的方法如下,是用 uuid 裡面的getnode() 來拿 MAC address,但是多張網卡的情況就無法全部列出

import uuid
sMac = hex(uuid.getnode())
print sMAC #Mac address here

所以Alarmchang說參考uuid.getnode()的 source code 然後改寫成以下
就可以同時取回 IPV6, IPV4 的 MAC ~~

# -*- coding: utf-8 -*-
 
def _ipconfig_getnode():
    """Get the hardware address on Windows by running ipconfig.exe."""
    import os, re
    dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
    result = []
    try:
        import ctypes
        buffer = ctypes.create_string_buffer(300)
        ctypes.windll.kernel32.GetSystemDirectoryA(buffer, 300)
        dirs.insert(0, buffer.value.decode('mbcs'))
    except:
        pass
    for dir in dirs:
        try:
            pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all')
        except IOError:
            continue
        for line in pipe:
            value = line.split(':')[-1].strip().lower()
            if re.match('([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]', value):
                result.append(value)
                print value
                #return int(value.replace('-', ''), 16)
        return result
 
 
def main():
    _ipconfig_getnode()
 
 
if __name__ == '__main__':
    main()

執行結果如下:
Get mac add010.jpg

無迴響

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

電腦主機相關
下載DELL原廠windows ISO檔方法

https://www.dell.com/support/home/tw/zh/twdhs1/dri …

電腦主機相關
windows 絕對停止update的方法

無法自行增加輸入法,會出現錯誤 VS2017會有部份物件無法使用 以上為目前缺點: 使用電腦系統管理 …

電腦主機相關
UEFI windows 無法開機

步驟 1 當你UEFI windows 無法開機,它需要修復開機! 步驟 2 在光碟機放入windo …