python脚本实现运维工具箱
主逻辑函数脚本:
import psutil
import cpu,memory,disk,net
def cpu_psutil():
cpu.dis_count()
def men_psutil():
memory.dis_mem()
def disk_psutil():
disk.dis_disk()
def eth0_psutil():
net.net()
def quite():
print('程序已退出')
choose = {
'1':{'tital':'CPU 信息','function':cpu_psutil},
'2':{'tital':'内存 信息','function':men_psutil},
'3':{'tital':'磁盘 信息','function':disk_psutil},
'4':{'tital':'网卡 信息','function':eth0_psutil},
'0':{'tital':'退出程序','function':quite}
}
def choose_play():
for k, v in choose.items():
print(k, v['tital'])
choose_play()
select = 0
while True:
try:
select = input().strip()
choos = choose.get(select)
li = [1,2,3,4]
function = choos['function']
choose_play()
function()
if select == '0':
break
except:
print('agin')
pass
#mem_dic = {
# '1': {'total': "cpu 信息", 'func': display_cpu},
# # '2': {'total': "mem 信息",'func': dis_mem},
#}
#def display_mem():
# for k,item in mem_dic.items():
# print(k,item['total'])
#display_mem()
#while True:
# inp = input(">>: ")
# mem = mem_dic.get(inp, None)
# if mem:
# func = mem['func']
# display_mem()
# func()
# else:
# print("again")
CPU模块:
import psutil
def get_cpu():
#cpu 实例数
cpu_count = len(psutil.Process().cpu_affinity())
#每颗cpu 的物理核心数
cpu_py_count = psutil.cpu_count(logical=False)
#cpu信息
cpu_info = psutil.cpu_times_percent(interval=0.1)
return cpu_count, cpu_py_count, cpu_info
def dis_count():
cpu_count, cpu_py_count, cpu_info = get_cpu()
ou = '''CPU总数:{} CPU颗粒数:{}
CPU信息:{} '''
print(ou.format(cpu_count, cpu_py_count, cpu_info))
if __name__ == "__main__":
dis_count()
内存模块脚本:
import psutil
from tools import bytes2human
def get_mem():
return psutil.virtual_memory()
def dis_mem():
mem_info = get_mem()
tpl = "内存总容量: {total} | 内存已使用: {used} | 空闲内存: {free}"
print(tpl.format(total=bytes2human(mem_info.total),
used=bytes2human(mem_info.used),
free=bytes2human(mem_info.free)))
if __name__ == "__main__":
dis_mem()
磁盘模块脚本
import psutil
from tools import bytes2human
def get_disk():
return psutil.disk_partitions(all=False)
def dis_disk():
disk_li = get_disk()
print("{:<20}".format("硬盘分区容量"))
print('*' * 20)
for p in disk_li:
disk = psutil.disk_usage(p.mountpoint)
print("分区{}:".format(p.mountpoint))
print("总",bytes2human(disk.total))
print("已使用",bytes2human(disk.used))
print("{:>20}".format("-" * 15))
print("*" * 20)
if __name__ == "__main__":
dis_disk()
网卡信息模块脚本
import socket
import psutil
def net():
net_ip_dic = psutil.net_if_addrs()
net_stat_dic = psutil.net_if_stats()
for net_name, net_info in net_ip_dic.items():
if net_name == 'lo':
continue
net_stat = net_stat_dic[net_name]
print(f"网络 {net_name} 的状态是:{net_stat.isup}")
for addr in net_info:
if addr.family == socket.AF_INET:
print("IPV4", addr.address,
f"NETMASK:{addr.netmask}")
elif addr.family == socket.AF_PACKET:
print(f"MAC{addr.address}")
if __name__ == '__main__':
net()