|
|
|
import os
|
|
|
|
import platform
|
|
|
|
import socket
|
|
|
|
import subprocess
|
|
|
|
import psutil
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
|
threads_por_nucleo = psutil.cpu_count(logical=False)
|
|
|
|
memoria = psutil.virtual_memory()
|
|
|
|
|
|
|
|
def display_horizontal_bar(label, value, max_value=100, bar_length=20, color='\033[0m'):
|
|
|
|
percentage = (value / max_value) * 100
|
|
|
|
bar_fill_length = int(bar_length * (percentage / 100))
|
|
|
|
|
|
|
|
bar = f"{color}|" + '=' * bar_fill_length + ' ' * (bar_length - bar_fill_length) + f'{color}|'
|
|
|
|
print(f"{label} {bar} {percentage:.2f}%\033[0m")
|
|
|
|
|
|
|
|
def get_process_states():
|
|
|
|
# Get a list of all running processes
|
|
|
|
processes = psutil.process_iter(['pid', 'name', 'status'])
|
|
|
|
|
|
|
|
# Initialize counters for different process states
|
|
|
|
running_count = 0
|
|
|
|
sleeping_count = 0
|
|
|
|
other_count = 0
|
|
|
|
|
|
|
|
# Iterate through processes and count their states
|
|
|
|
for process in processes:
|
|
|
|
status = process.info['status'].lower()
|
|
|
|
if 'running' in status:
|
|
|
|
running_count += 1
|
|
|
|
elif 'sleeping' in status:
|
|
|
|
sleeping_count += 1
|
|
|
|
else:
|
|
|
|
other_count += 1
|
|
|
|
|
|
|
|
return running_count, sleeping_count, other_count
|
|
|
|
|
|
|
|
def get_running_processes():
|
|
|
|
# Using list comprehension to get information about all running processes
|
|
|
|
return [proc.info for proc in psutil.process_iter(['pid', 'name', 'username'])]
|
|
|
|
def get_tcp_connections():
|
|
|
|
connections = psutil.net_connections(kind='inet')
|
|
|
|
return connections
|
|
|
|
|
|
|
|
def procesesRunning():
|
|
|
|
# Get and print information about all running processes
|
|
|
|
running_processes = get_running_processes()
|
|
|
|
|
|
|
|
# Print the information without a separate loop
|
|
|
|
print("\n".join([f"PID: {process['pid']}, Name: {process['name']}, User: {process['username']}" for process in running_processes]))
|
|
|
|
|
|
|
|
battery = psutil.sensors_battery()
|
|
|
|
plugged = battery.power_plugged
|
|
|
|
percent = str(battery.percent)
|
|
|
|
plugged = "Plugged In" if plugged else "Not Plugged In"
|
|
|
|
|
|
|
|
ans=True
|
|
|
|
while ans:
|
|
|
|
print("""
|
|
|
|
1. Hilos por nucleo
|
|
|
|
2. Memoria Total, Memoria Diponible y Porcentaje de memoria utilizada
|
|
|
|
3. Modulo OS
|
|
|
|
4. Informacion sobre drives en el sistema
|
|
|
|
5. El estado de bateria
|
|
|
|
6. Procesos activados
|
|
|
|
7. El uso del CPU, memoria y swap
|
|
|
|
8. Lista de connecciones TPC
|
|
|
|
9. Temperatura
|
|
|
|
10. Socket info
|
|
|
|
11. Modulo de plataforma
|
|
|
|
12. Numero de precesos activos,dormidos y otros
|
|
|
|
0.Salir
|
|
|
|
""")
|
|
|
|
ans=input("Elige que tipo de informacio deseas saber:")
|
|
|
|
if ans=="1":
|
|
|
|
print(f"Tu procesador tiene {threads_por_nucleo} hilos por núcleo.")
|
|
|
|
elif ans=="2":
|
|
|
|
print(f"Memoria total: {memoria.total} bytes")
|
|
|
|
print(f"Memoria disponible: {memoria.available} bytes")
|
|
|
|
print(f"Porcentaje de memoria utilizada: {memoria.percent}%")
|
|
|
|
elif ans=="3":
|
|
|
|
cpu_count = os.cpu_count()
|
|
|
|
print(f"CPU Count: {cpu_count}")
|
|
|
|
current_directory = os.getcwd()
|
|
|
|
print(f"Current Directory: {current_directory}")
|
|
|
|
elif ans == "4":
|
|
|
|
result = subprocess.run(['powershell', 'Get-PSDrive'], stdout=subprocess.PIPE, text=True)
|
|
|
|
print(result.stdout)
|
|
|
|
elif ans == "5":
|
|
|
|
print(percent+'% | '+plugged)
|
|
|
|
elif ans == "6":
|
|
|
|
procesesRunning()
|
|
|
|
elif ans == "7":
|
|
|
|
cpu_usage = psutil.cpu_percent(interval=1)
|
|
|
|
memory_info = psutil.virtual_memory()
|
|
|
|
swap_info = psutil.swap_memory()
|
|
|
|
display_horizontal_bar('CPU', cpu_usage, color='\033[91m')
|
|
|
|
display_horizontal_bar('Memoria', memory_info.percent, color='\033[94m')
|
|
|
|
display_horizontal_bar('Swap', swap_info.percent, color='\033[92m')
|
|
|
|
elif ans =="8":
|
|
|
|
if __name__ == "__main__":
|
|
|
|
tcp_connections = get_tcp_connections()
|
|
|
|
for connection in tcp_connections:
|
|
|
|
print(f"Local Address: {connection.laddr}")
|
|
|
|
print(f"Remote Address: {connection.raddr}")
|
|
|
|
print(f"Status: {connection.status}")
|
|
|
|
print("-----------------------------------")
|
|
|
|
elif ans=="9":
|
|
|
|
try:
|
|
|
|
temperatures = psutil.sensors_temperatures()
|
|
|
|
print("Temperatura:")
|
|
|
|
for name, entries in temperatures.items():
|
|
|
|
for entry in entries:
|
|
|
|
print(f"{name}: {entry.label} - {entry.current}°C")
|
|
|
|
except AttributeError:
|
|
|
|
print("la informacion sobre temeratura no esta disponible ens ete sitema")
|
|
|
|
elif ans == "10":
|
|
|
|
hostname = socket.gethostname()
|
|
|
|
ip_address = socket.gethostbyname(hostname)
|
|
|
|
print(f"Hostname: {hostname}")
|
|
|
|
print(f"IP Address: {ip_address}")
|
|
|
|
elif ans == "11":
|
|
|
|
system_info = platform.system()
|
|
|
|
release_info = platform.release()
|
|
|
|
print(f"System: {system_info}")
|
|
|
|
print(f"Release: {release_info}")
|
|
|
|
elif ans == "12":
|
|
|
|
running, sleeping, other = get_process_states()
|
|
|
|
print(f"Processos activos: {running}")
|
|
|
|
print(f"procesos dormiendo: {sleeping}")
|
|
|
|
print(f"Otros procesos: {other}")
|
|
|
|
elif ans =="0":
|
|
|
|
print("\n Adios")
|
|
|
|
ans = None
|
|
|
|
else:
|
|
|
|
print("\n no es una pocion valida")
|