#!/usr/bin/env python
#-*-coding:utf-8-*-
import socket
import psutil


def get_hostname_ip():
    # 获取主机名
    hostname = socket.gethostname()
    # 获取IP地址
    ip = socket.gethostbyname(hostname)
    # 返回参数
    return hostname, ip 


def get_cpu_info():
    # 逻辑CPU个数
    logical_cpus = psutil.cpu_count(logical=True)
    # 物理CPU个数
    physical_cpus = psutil.cpu_count(logical=False)
    # CPU使用率
    cpu_usage = psutil.cpu_percent(interval=1)
    print(f"{'*' * 10}CPU{'*' * 10}")
    print(f"逻辑 CPU 数量: {logical_cpus}")
    print(f"物理 CPU 数量: {physical_cpus}")
    print(f"CPU 使用率: {cpu_usage}%")
    # 返回参数
    return logical_cpus, physical_cpus, cpu_usage


def get_mem_info():
    memory = psutil.virtual_memory()
    #memory.total
    #memory.available
    #memory.used
    #memory.free
    print(f"{'*' * 10}内存{'*' * 10}")
    print(f"总内存:{memory.total / (1024 ** 3):.1f}GB")
    print(f"可用内存:{memory.available / (1024 ** 3):.1f}GB")
    print(f"已用内存:{memory.used / (1024 ** 3):.1f}GB")
    print(f"空闲内存:{memory.free / (1024 ** 3):.1f}GB")
    return memory.total, memory.available, memory.used, memory.free


def get_swap_info():
    swap_memory = psutil.swap_memory()
    print(f"{'*' * 10}swap内存{'*' * 10}")
    print(f"swap内存使用率: {swap_memory.percent}%")
    print(f"swap内存总量: {swap_memory.total / (1024 ** 3):.1f} GB")
    print(f"swap内存已用: {swap_memory.used / (1024 ** 3):.1f} GB")
    print(f"swap内存剩余: {swap_memory.free / (1024 ** 3):.1f} GB")


def get_disk_info():
    # 获取除了 CD-ROM、闪存等设备外的磁盘分区信息
    disk_partitions = psutil.disk_partitions(all=False)      
    for partition in disk_partitions:
        usage = psutil.disk_usage(partition.mountpoint)
        print(f"{'*' * 10}{partition.mountpoint}{'*' * 10}")
        print(f"磁盘:{partition.device}挂载:{partition.mountpoint}")
        print(f"磁盘:{partition.mountpoint}使用率:{usage.percent}%")
        print(f"磁盘总量:{usage.total / (1024 ** 3):.1f} GB")
        print(f"磁盘已用:{usage.used / (1024 ** 3):.1f} GB")
        print(f"磁盘剩余:{usage.free / (1024 ** 3):.1f} GB")


if __name__ == '__main__':
    hostname_ip = list(get_hostname_ip())
    print(f"主机名:{hostname_ip[0]}\nIP地址:{hostname_ip[1]}")
    get_cpu_info()
    get_mem_info()
    get_swap_info()
    get_disk_info()