如果得到网卡mac地址

如果得到网卡mac地址

RT

得到本机mac地址
import os
import re

def GetMac():
    if os.name == 'nt':
        try:
            ret = ''
            CmdLine = 'ipconfig /all'
            r = os.popen(CmdLine).read()
            if r:
                L = re.findall('Physical Address.*?([0-9,A-F]{2}-[0-9,A-F]{2}-[0-9,A-F]{2}-[0-9,A-F]{2}-[0-9,A-F]{2}-[0-9,A-F]{2})', r)
                if len(L) > 0:
                    ret = L[0]
        except:
            pass
        
    elif os.name == "posix":
        try:
            ret = ''
            CmdLine = 'ifconfig'
            r = os.popen(CmdLine).read()
            if r:
                L = re.findall('HWaddr.*?([0-9,A-F]{2}:[0-9,A-F]{2}:[0-9,A-F]{2}:[0-9,A-F]{2}:[0-9,A-F]{2}:[0-9,A-F]{2})', r)
                if len(L) > 0:
                    ret = L[0]
        except:
            pass
    else:
        pass
    return ret

if __name__ == '__main__':
    mac =  GetMac()
    print mac

以前写的 没想到什么更好的办法
linux下是centos测试的
TO:CmdLine = 'ifconfig'

linux下面是ifconfig吧
虽然我现在在用python , 但是很不喜欢python的正则,   

perl 下很简单的实现..

[Copy to clipboard] [ - ]
CODE:
$a=`ipconfig /all`;
if ($a=~ /Physical.*:(.*)/) {
        print $1;
}

呵呵 3楼的朋友 。。。。
>>> import uuid
>>> node = uuid.getnode()
>>> mac = uuid.UUID(int=node)
>>> addr = mac.hex[-12:]
>>> addr
'001a4d71d4ca'
在c:/python25/Lib/uuid.py可以看看uuid的源码:
在其_ipconfig_getnode()函数的基础上,我添加了一个函数,考虑多个网卡的情况:
def ipconfig_getnode(id):
    """----add by liangzi----get mac if have more than one newwork hardware"""
    import os, re
    dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
    try:
        import ctypes
        buffer = ctypes.create_string_buffer(300)
        ctypes.windll.kernel32.GetSystemDirectoryA(buffer, 300)
        dirs.insert(0, buffer.value.decode('mbcs'))
    except:
        pass
    macad=[]
    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):
                 macad.append(value)          #我需要的字符串
                 #macad.append(int(value.replace('-', ''), 16))  这里是返回数字
   
    return macad[id]
>>> import uuid
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ImportError: No module named uuid
是为什呢?

>>> print os.name
posix

不知道啊,我的是win,安装的py2.5,uuid是标准模块里的
哈哈, 可能是版本问题。