获取网卡物理mac地址时的问题,mac地址随机变动。

在开发过程中需要获取物理网卡的MAC地址:

python代码如下:

import wmi
c = wmi.WMI()

for s in c.Win32_NetworkAdapter():
    print(s.MACAddress)

 在实际过程中,有时候会发现mac地址每次获取会发生改变,

通过检查发现,获取mac地址时会把系统虚拟的网卡地址也会获取到。我们通过powershell命令进行查看当前系统中拥有MAC地址的有那些设备:

PS C:\Users\xxx> get-wmiobject -class Win32_NetworkAdapterConfiguration -namespace "root\cimv2" | select ServiceName,ipadress,MacAddress

ServiceName  ipadress MacAddress
-----------  -------- ----------
kdnic
rt640x64
RtlWlanu              50:2B:73:D8:1A:C9
vwifimp               52:2B:73:D8:1A:C9
RasSstp
RasAgileVpn
Rasl2tp
PptpMiniport
RasPppoe
NdisWan               F2:BB:20:52:41:53
NdisWan               0A:93:20:52:41:53
NdisWan               16:86:20:52:41:53
vwifimp               50:2B:73:D8:1A:C9
VMnetAdapter          00:50:56:C0:00:01
VMnetAdapter          00:50:56:C0:00:08

  看结果中的NdisWan,如果获取到的是它,那机器每次重启都有可能发生改变。

所以需要把代码做一下调整:

import wmi
c = wmi.WMI()

for s in c.Win32_NetworkAdapter():
        if(s.MACAddress != None and s.PhysicalAdapter):
            print(s.MACAddress)

  过滤掉没有mac地址的设备和非物理网络设备。如果有虚拟机,可以把虚拟机的虚拟网卡也过滤掉。

posted @ 2020-04-08 23:25  糖果的二师兄  阅读(1360)  评论(0编辑  收藏  举报