用python写好脚本,直接在终端运行,总觉得不得劲,有个GUI界面用鼠标点来点去才像样嘛........
python有不少GUI框架,例如Tkinter、wxPython、PyQt、Kivy等主流框架,也有上述框架再封装的框架,如EasyGUI、PyGUI、Pyforms等等。
然而人生苦短,做一些小工具何必杀鸡用牛刀呢。我选择傻瓜式PySimpleGUI。
做一个获取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,搞定,收工,下班,撸串!
(这界面够丑的,算了,能用就行能用就行.............)