有大神知道吗?为什么用python获取mac地址会变动?

import uuid

mac=uuid.UUID(int=uuid.getnode())

MAC=mac.hex[-12:]

输出得到的MAC值不是本机mac地址,而且过段时间就会变动

MYYA
浏览 632回答 2
2回答

陪伴而非守候

>>> import socket>>> myname = socket.getfqdn(socket.gethostname())>>> socket.gethostbyname(myname)通过此方法获得的IP看看,是不是也与实际对应不上?

catspeake

首先声明,我本人还没有研究出来问题的究竟。此处只是写下我本人的一点小心得,大家一起进步。因为我发现,使用uuid库得到的mac地址,总有最后一位不对。所以,我就查看了python官方的uuid文档,找到了问题的关键是调用UUID()的时候,会调用getnode()函数以得到物理地址。这个是getnode()函数的定义:我把它摘出来,考到下面。def getnode(*, getters=None):"""Get the hardware address as a 48-bit positive integer.The first time this runs, it may launch a separate program, which couldbe quite slow. &nbsp;If all attempts to obtain the hardware address fail, wechoose a random 48-bit number with its eighth bit set to 1 as recommendedin RFC 4122."""global _nodeif _node is not None:return _nodeif sys.platform == 'win32':getters = _NODE_GETTERS_WIN32else:getters = _NODE_GETTERS_UNIXfor getter in getters + [_random_getnode]:try:_node = getter()except:continueif (_node is not None) and (0 <= _node < (1 << 48)):return _nodeassert False, '_random_getnode() returned invalid value: {}'.format(_node)我正在试图通过研究这个问题来试图研究。但同样,我觉得我们可以直接让python调用系统库,从而执行系统自带的命令:(类似于windows下cmd里面"ipconfig -all"命令,或者ubuntu下terminal中"ifconfig"命令)。实现物理地址。之后,根据“短时间内该机器的网卡不会出现过大的变动这个前提”,我们可以根据返回内容,切片出我们需要的部分即可。
打开App,查看更多内容
随时随地看视频慕课网APP