|
吾爱游客
发表于 2023-3-24 20:59
1、申 请 I D :Panda_Wu
2、个人邮箱:harmonica39@126.com
3、原创技术文章
获取mac和ip的小工具获取mac和ip的方式有不少。第一种,用uuid模块获取mac的,可能是玄学原因,我获取到的mac地址和直接敲ipconfig /all的不一样,该方案pass。第二种,用wmi模块获取的,但我想同时获取网卡mac对应的ip,技术难度略高,该方案pass。第三种,用netifaces模块,工具很强大,学习成本高,pass。第四种,直接调用系统命令ipconfig,用字符串筛选,感觉不对,pass。第五种,简单易行的psutil模块,运维使用,正合我意。贴个主要代码:def get_net_addr():
​
macdict= dict()
dic = psutil.net_if_addrs()
for adapter in dic:
sniclist = dic[adapter]
iplist=[]
for snic in sniclist: if '-' in snic.address and len(snic.address)==17:
mac = snic.address
if '.' in snic.address:
iplist.append(snic.address)
macdict[adapter] = mac,iplist
​
return macdict写个GUI直接上pysimplegui,迅速写好GUI。#GUI的布局
layout = [
[sg.Text('输入位置')],
[sg.Input(key='classnum')],
[sg.Text('点击开始获取mac地址和ip地址')],
[sg.Button('开始',key='submit'),sg.Quit('退出',key='q')],
[sg.Text('主机所在位置:',size=(6,1)),sg.Text('',key='num',size=(10,1))],
[sg.Text('主机名:',size=(6,1)),sg.Text('',key='hostname',size=(10,1))],
[sg.Multiline('',key='information',size=(50,20),autoscroll=True)]
]
​
#设置图标,图标是从阿里巴巴图标库下载的,随便找个在线网站转换成ico
sg.set_global_icon('panda.ico')
​
#设置标题创建窗口
window = sg.Window('获取主机mac和ip工具',layout)
​
#进入循环监听事件
while True:
event,value = window.Read()
if event == 'submit':
#获取mac和ip
information = get_net_addr()
#为了好看,写了格式化输出函数处理mac和ip信息
output = format_information(information)
#顺便获取主机名
hostname = get_hostname()
#显示信息
window.Element('num').Update(value['classnum'])
window.Element('hostname').Update(hostname)
window.Element('information').print(output)
#写入文件的小功能 write_to_file(num=value['classnum'],hostname=hostname,information=information)
elif event == 'q' or event == sg.WIN_CLOSED:
break
window.Close()大功告成用pyinstaller -F -w XXXX.py一键打包成exe使用场景和功能用于登记位于不同位置的windows设备的ip和mac,例如学校里的不同班级的一体机、办公室电脑等。多个网卡,多个ip都能收集到,直接在后台生成md文件。 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|