psutil模块实现Linux 主机信息获取和展示系统

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()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容