ConstStar
发布于 2023-11-16 / 33 阅读 / 0 评论 / 0 点赞

Python获取当前计算机使用情况、网络信息等

import psutil
import socket
import requests

# 兼容Windows
if 'AF_PACKET' not in socket.AddressFamily.__members__:
    socket.AddressFamily.AF_PACKET = -1

print("CPU使用率:%.2f%%" % psutil.cpu_percent(interval=1))

memory_info = psutil.virtual_memory()
print("内存总量:%s" % memory_info.total)
print("已使用内存:%s" % memory_info.used)
print("内存使用率:%s%%" % memory_info.percent)

# # 获取主机名和IP地址
# host_name = socket.gethostname()
# # print("主机名:%s" % host_name)
# host_ip = socket.gethostbyname(host_name)
# print("IP地址: %s" % host_ip)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print("当前使用的ip地址:%s" % s.getsockname()[0])
s.close()

addr_dict = {}

interfaces = psutil.net_if_addrs()
for interface_name, interface_addresses in interfaces.items():
    addr = {
    }

    for interface_address in interface_addresses:
        # MAC 地址
        if interface_address.family == socket.AddressFamily.AF_PACKET:
            addr['mac'] = interface_address.address

        # IPv4 地址
        elif interface_address.family == socket.AddressFamily.AF_INET:
            # 过滤本地地址
            if interface_address.address == "127.0.0.1":
                continue

            addr['ipv4'] = interface_address.address

        # IPv6 地址
        elif interface_address.family == socket.AddressFamily.AF_INET6:
            addr['ipv6'] = interface_address.address

    addr_dict[interface_name] = addr

print("设备地址信息:")
print(addr_dict)

pub_ip = requests.get('https://ident.me').text.strip()
print("公网ip:", pub_ip)

评论