Script en Python para obtener los datos básicos de un equipo (Windows/Linux): arquitectura, versión del SO, sistema, nombre del equipo, procesador, fecha de arranque, número de procesos en ejecución, CPU cores, modelo CPU, discos duros y espacio, direcciones IP, memoria RAM, etc.
El código del script en Python completo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# Importamos los módulos requeridos import platform from datetime import datetime import psutil import os # Información básica del equipo print("\n---Información básica---") print("* Arquitectura: {0}".format(platform.architecture()[0])) print("* Versión {0}, Release: {1}".format(platform.version(), platform.release())) print("* Sistema: {0}, plataforma: {1}".format(platform.system(), platform.platform())) print("* Nombre: {0}".format(platform.node())) # print("* Procesador:",platform.processor()) # De la librería psutil obtenemos la fecha y hora de arranque del equipo if platform.system() == "Linux": fecha_arranque = datetime.fromtimestamp(psutil.boot_time()) with open("/proc/uptime", "r") as f: uptime = f.read().split(" ")[0].strip() uptime = int(float(uptime)) uptime_hours = uptime // 3600 uptime_minutes = (uptime % 3600) // 60 print("* Fecha arranque: {0}, horas arrancado: {1}".format(fecha_arranque, str(uptime_hours) + ":" + str(uptime_minutes))) # Número de procesos en ejecución if platform.system() == "Linux": numProcesos = [] for subdir in os.listdir('/proc'): if subdir.isdigit(): numProcesos.append(subdir) print("* Número de procesos: {0}".format(len(numProcesos))) # Información de CPU print("\n---CPU---") print("* Cores físicos: {0}, cores totales {1}".format(psutil.cpu_count(logical=False), psutil.cpu_count(logical=True))) # Frecuenca CPU en Mhz frecuenciaCPU = psutil.cpu_freq() print("* Frecuencia: {0} MHZ".format(frecuenciaCPU.current)) # Modelo de procesador if platform.system() == "Linux": with open("/proc/cpuinfo", "r") as f: file_info = f.readlines() cpuinfo = [x.strip().split(":")[1] for x in file_info if "model name" in x] for index, item in enumerate(cpuinfo): print("* Procesador " + str(index) + " : " + item) # Para convertir bytes en Gigabytes def bytes_to_GB(bytes): gb = bytes/(1024*1024*1024) gb = round(gb, 2) return gb # Memoria RAM virtual_memory = psutil.virtual_memory() print("\n---RAM total:", bytes_to_GB(virtual_memory.total), "Gb") # Discos duros particionesDisco = psutil.disk_partitions() print("\n---HD---") # Información de cada partición for partition in particionesDisco: disk_usage = psutil.disk_usage(partition.mountpoint) print("* {0}, total espacio: {1}".format(partition.device, bytes_to_GB(disk_usage.total), "GB")) # print("* Sistema de ficheros: ", partition.fstype) # print("Montaje: ", partition.mountpoint) # Interfaces de red interfacesRed = psutil.net_if_addrs() print("\n---Interfaces de red---") for interface_name, interface_addresses in interfacesRed.items(): for address in interface_addresses: if interface_name != "lo" and address.address != "": if str(address.family) == 'AddressFamily.AF_INET': print("Interfaz:", interface_name) print("IP:", address.address) # print("* Subred: ", address.netmask) # print("* Broadcast: ", address.broadcast) # elif str(address.family) == 'AddressFamily.AF_PACKET': #print("MAC:", address.address) # print("* Subred: ", address.netmask) # print("* Broadcast: ",address.broadcast) |
El script Python anterior necesitará tener instalado el paquete psutil, que podemos instalar ejecutando:
1 |
pip3 install psutil |
Guardaremos el código oanterior en un fichero con el nombre InfoPC.py.
Un ejemplo de salida ejecutando el script Python en un equipo con Windows 11 con el comando:
1 |
pyhton.exe InfoPC.py |
Devolverá por pantalla algo así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
---Información básica--- * Arquitectura: 64bit * Versión 10.0.22000, Release: 10 * Sistema: Windows, plataforma: Windows-10-10.0.22000-SP0 * Nombre: pcalonso ---CPU--- * Cores físicos: 8, cores totales 16 * Frecuencia: 3600.0 MHZ ---RAM total: 31.93 Gb ---HD--- * C:\, total espacio: 930.55 * D:\, total espacio: 465.76 * E:\, total espacio: 16763.98 * F:\, total espacio: 7451.91 * G:\, total espacio: 7452.02 ---Interfaces de red--- Interfaz: Ethernet IP: 192.168.1.10 Interfaz: Wi-Fi IP: 169.254.220.39 Interfaz: Conexión de área local* 1 IP: 169.254.66.48 Interfaz: Conexión de área local* 2 IP: 169.254.123.75 Interfaz: VMware Network Adapter VMnet1 IP: 192.168.154.1 Interfaz: VMware Network Adapter VMnet8 IP: 192.168.142.1 |
En un equipo Linux Ubuntu, ejecutando:
1 |
python3 InfoPC.py |
Devolverá:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
---Información básica--- * Arquitectura: 64bit * Versión #1 SMP Tue Sep 7 14:49:57 UTC 2021, Release: 3.10.0-1160.42.2.el7.x86_64 * Sistema: Linux, plataforma: Linux-3.10.0-1160.42.2.el7.x86_64-x86_64-with-glibc2.17 * Nombre: srvmysql * Fecha arranque: 2023-12-12 21:54:49, horas arrancado: 1152:32 * Número de procesos: 117 ---CPU--- * Cores físicos: 1, cores totales 1 * Frecuencia: 3103.574 MHZ * Procesador 0 : Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz ---RAM total: 2.76 Gb ---HD--- * /dev/mapper/centos-root, total espacio: 44.32 * /dev/sda1, total espacio: 0.99 * /dev/mapper/centos-home, total espacio: 21.64 ---Interfaces de red--- Interfaz: ens192 IP: 192.168.1.5 |
Si queremos generar el ejecutable portable de la aplicación Python, seguiremos los pasos del siguiente tutorial: