获取网卡物理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地址的设备和非物理网络设备。如果有虚拟机,可以把虚拟机的虚拟网卡也过滤掉。