利用python来自己写一个服务器台账统计小工具
  zZHnZavbRDNq 2023年11月02日 47 0


利用python来自己写一个服务器台账统计小工具

前言

无奈呀,压力创造成品

背景是这样的,相信在看的各位在管理服务器密码的时候,肯定会有个台账啥的,当然咱也有,但是吧,为了安全期间,不允许出现在服务器上面,也就是说有运维平台也不行,包括咱今天这个软件也没用到数据库啥的,其中最关键的就是里面涉及到的一个execl表格,里面记录了相关的服务器信息包括密码,这个可是重中之重哈,一定要保护好,当然如果这个execl换成了mysql那会更简单

逻辑分析



  • 对execl表中相关的数据进行晒选,并打印出来
    建议:execl表放到专用U盘里面,专用的U盘专用的电脑使用
    非常简单的呦,大神还请勿扰

先看效果图


利用python来自己写一个服务器台账统计小工具


看下execl表内容

利用python来自己写一个服务器台账统计小工具_python


当然这个是样例哈,这个软件的主要功能还是在对这个execl表做筛选和修改操作,道理非常简单,当然你也可以直接操作这个execl表

从图中可以看到我总共分了5列,分别是主机ip,平台名称,维护人员,主机类型,密码。当然也可以根据自己的需要更改一下上面的字段哈

直接上源码

#!/usr/bin/env python
# coding:gbk


import tkinter as tk
import tkinter.messagebox
import openpyxl

root = tk.Tk()  # 创建窗口对象的背景色
root.title("运维助手  --服务器运维管理小助手   v1.10     Mr.liu")
root.geometry("950x360")

# 第一个框开始
###不要好奇这里为什么用denglu这个作为变量,主要是ctrl+c,ctrl+v,从我的另一个复制过来的,大同小异,就拉的改了
denglu = tk.LabelFrame(root, text="相关查询", padx=10, pady=5)
denglu.grid(row=0, sticky='N', column=0, padx=10, pady=10)

#框框里面需要展示的内容
tk.Label(denglu, text="服务器ip:").grid(row=0, column=0)
tk.Label(denglu, text="平台名称:").grid(row=1, column=0)
tk.Label(denglu, text="维护人员:").grid(row=2, column=0)
tk.Label(denglu, text="主机类型:").grid(row=3, column=0)

##创建各字段后面的内容输入框
v1 = tk.StringVar()
v2 = tk.StringVar()
v3 = tk.StringVar()
v4 = tk.StringVar()

e1 = tk.Entry(denglu, textvariable=v1)
e2 = tk.Entry(denglu, textvariable=v2)
e3 = tk.Entry(denglu, textvariable=v3)
e4 = tk.Entry(denglu, textvariable=v4)


##定义一下输入框的位置
e1.grid(row=0, column=1, padx=10, pady=5)
e2.grid(row=1, column=1, padx=10, pady=5)
e3.grid(row=2, column=1, padx=10, pady=5)
e4.grid(row=3, column=1, padx=10, pady=5)


##写一个函数,当某一个按钮按下将触发这个函数
def ceshi_sql():
	##测试下内容输入框是否可用
    # print(e1.get())  #第一个输入框
    # print(e2.get()) #第二个输入框
    # print(e3.get()) #第三个输入框
    # print(e4.get()) #第四个输入框
    if e1.get() == "" and e2.get() == "" and e3.get() == "" and e4.get() == "":
        try:
            wb = openpyxl.load_workbook('linux/linux.xlsx')
            # 根据工作表格名称创建工作表对象
            sheet = wb['Sheet1']
            # # 迭代器方式,按行获取所有单元格(Cell对象)
            text.delete(0.0, tk.END)
            jieguo1 = '\n===========================已经列出全部主机============================\n\n\n'
            text.insert(tk.INSERT, jieguo1)
            ##遍历所有的列
            for row in sheet.iter_rows():
            	##遍历行
                for cell in row:
                    a = "|" + cell.value        ##每个记录前面加一个 ”|“,为了好看
                    text.insert(tk.INSERT, a)	#写进text这个结果框里面
                b = '\n---------------------------------------------\n'
                text.insert(tk.INSERT, b)
        except Exception as e:
            tk.messagebox.askokcancel("提示", e)		##报错提示
    else:
        try:
        	###读取execl表,其中linux/linux.xlsx为路径,可以更改,等你的专用U盘插入电脑后,可以写上你的U盘路径呦
            wb = openpyxl.load_workbook('linux/linux.xlsx')
            # 根据工作表格名称创建工作表对象
            sheet = wb['Sheet1']
            # # 迭代器方式,按行获取所有单元格(Cell对象)
            text.delete(0.0, tk.END)
            ###用最惨的代码完成最简单的工作
            jieguo1 = '\n===========================已经列出全部主机============================\n\n\n===服务器ip==平台名称=维护==机器类型====密码=====\n---------------------------------------------\n'
            text.insert(tk.INSERT, jieguo1)
            for row in sheet.iter_rows():
                for cell in row:
                	##进行数据的匹配,如果匹配的上,则将整行打印出来
                	##这个地方大家可以根据自己的需要改一下的哈,简单的if判断,我相信大家还是可以看的懂的哈
                    if str(cell.value) == e1.get() or str(cell.value) == e2.get() or str(cell.value) == e3.get() or str(cell.value) == e4.get():
                        for cell1 in row:
                            print(cell1)
                            print(cell1.value)
                            a1 = "|" + cell1.value
                            text.insert(tk.INSERT, a1)
                            # text.insert(tk.INSERT, a)
                        b = '\n---------------------------------------------\n'
                        text.insert(tk.INSERT, b)

        except Exception as e:
            tk.messagebox.askokcancel("提示", e)


tk.Button(denglu, text="查询", width=10, command=ceshi_sql).grid(row=4, column=0, sticky='W', padx=10, pady=5)  # W左边
tk.Button(denglu, text="退出", width=10, command=root.quit).grid(row=4, column=1, sticky='E', padx=10, pady=5)  # E右边

###第二个框  更改框

# 第一个框开始
genggai = tk.LabelFrame(root, text="相关更改", padx=10, pady=5)
genggai.grid(row=1, sticky='N', column=0, padx=10, pady=0)

tk.Label(genggai, text="服务器ip:").grid(row=0, column=0)
tk.Label(genggai, text="新的密码:").grid(row=3, column=0)

v5 = tk.StringVar()
v6 = tk.StringVar()

e5 = tk.Entry(genggai, textvariable=v5)
e6 = tk.Entry(genggai, textvariable=v6, show="*")

e5.grid(row=0, column=1, padx=10, pady=5)
e6.grid(row=3, column=1, padx=10, pady=5)


###这里我就暂时不搞了,因为对于我来说,能查询出来密码就好了,如果大家有需要,可以自己研究下哈
def ceshi_sql():
    tk.messagebox.askokcancel("提示", "还未开发")


tk.Button(genggai, text="新增ip(未开发)", width=10, command=ceshi_sql).grid(row=4, column=0, sticky='W', padx=10, pady=5)  # W左边
tk.Button(genggai, text="更改密码(未开发)", width=10, command=ceshi_sql).grid(row=4, column=1, sticky='E', padx=10, pady=5)  # E右边

###创建结果输出框
jg = tk.LabelFrame(root, text="查询结果", padx=10, pady=10)
jg.grid(row=0, rowspan=2, column=1, sticky='N', padx=10, pady=10)
###引入一个文本框text,设置他的大小为width=80,height=23
text = tk.Text(jg, width=80, height=23)
###创建一个滚动条,因为要显示的内容太多,没有滚动条,看不全部
scroll = tk.Scrollbar(jg)
scroll.grid(row=0, column=1)
text.grid(row=0, column=0)
# 创建是上下滚动的条:y
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)

root.mainloop()  # 进入消息循环

后语

写的比较匆忙,如有不便之处还请谅解

这里的话,我就不打包成exe文件了,感谢大家


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
zZHnZavbRDNq