教你怎么用Python获得当前主机的MAC物理地址
1、MAC地址是全球唯一的网卡物理地址,我们在windows上可以用getmac命令获得网卡的物理地址。如图
在Linux上则用ifconfig命令看到网卡的mac地址(HWaddr)。
2、开始之前,需要说明一点:
要获得MAC地址有两种方式:第一种是调用系统的API,这就很麻烦了。windows、Linux、苹果各种系统的API各不相同。
第二种则是调用Python提供的uuid模块。
我们更倾向于第二种,跨平台,兼容Python2和Python3
我们要用到的是python内置模块uuid。
uuid模块主要有4个函数,uuid1、uuid3、uuid4、uuid5
在uuid中,原本有5个算法组成,分别是uuid1到uuid5
uuid1:MAC和时间戳算法
uuid2:分布式计算环境DCE算法(python内没有)
uuid3:名字空间和MD5散列值算法
uuid4:随机数算法
uuid5:名字空间的SHA-1散列值算法
python中没有uuid2。
我们要用到的就是uuid1
OK,开始写。
import uuid
导入uuid模块
3、我们用一个mac变量保存我们的mac+时间戳
mac = uuid.uuid1()
mac
可以看到我们得到了5段数据(用-隔开),第一段是一个随机数,第二段、第三段第四段是我们的时间和日期(包括秒数),最后一段则是我们的MAC地址。
4、type(mac)可以看到,这是一个uuid对象,我们可以通过uuid类提供的hex属性来获得我们要的5段十六进制数据。
type(mac)
mac = mac.hex
mac
5、这时我们再来做一个处理:
我们只想要获得最后一段数据,也就是我们的MAC地址,MAC地址为12位的十六进制。
那我们只取最后12位,其余的数据丢弃,然后把字符串转换成大写。
mac = mac[-12:].upper()
mac
#取从倒数第12位开始取字符,到结束 upper转换成大写
此时我们看到,我们要的MAC地址已经成功获取了。
6、此时还不够,我们还应该给我们这12位字符串进行字符处理。
我们希望每2位字符后添加一个-号。
例如FFFFFFFFFFFF变成FF-FF-FF-FF-FF-FF
此时我们用正则表达式处理一下即可。
import re
newmac = re.findall(r".{2}",mac)
newmac
#按2个字符进行分段之后,此时我们还需要添加一个-号,调用join方法
mac = "-".join(newmac)
mac
此时可以看到,我们已经成功的把-号加进去了。
print("您的MAC地址为:" + mac)
所有代码可写成如下:
import uuid,re
mac = uuid.uuid1().hex[-12:].upper()
mac = "-".join(re.findall(r".{2}",mac))
#或者省略为
mac = "-".join(re.findall(r".{2}",uuid.uuid1().hex[-12:].upper()))
1、怎么关注?
在经验的右上角小编头像旁边点击关注,如图。
2、怎么点赞?
请在经验左侧点赞,如图。
3、怎么投票?
在经验的下方点击投票,如图。
4、如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。
如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。
不尽感激。