40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import psutil
|
|
import time
|
|
import requests
|
|
|
|
class SystemStats:
|
|
@staticmethod
|
|
def get_memory_usage():
|
|
"""Obtiene el porcentaje de uso de memoria."""
|
|
return psutil.virtual_memory().percent
|
|
|
|
@staticmethod
|
|
def get_cpu_usage():
|
|
"""Obtiene el porcentaje de uso de CPU."""
|
|
return psutil.cpu_percent(interval=0)
|
|
|
|
@staticmethod
|
|
def get_network_usage():
|
|
"""Calcula la velocidad de subida y bajada de la red."""
|
|
net_io_start = psutil.net_io_counters()
|
|
time.sleep(1) # Esperar 1 segundo para medir el uso
|
|
net_io_end = psutil.net_io_counters()
|
|
|
|
# Calcular velocidades
|
|
bytes_sent_per_sec = net_io_end.bytes_sent - net_io_start.bytes_sent
|
|
bytes_recv_per_sec = net_io_end.bytes_recv - net_io_start.bytes_recv
|
|
|
|
return bytes_sent_per_sec, bytes_recv_per_sec
|
|
|
|
@staticmethod
|
|
def track_ip(ip):
|
|
"""Obtiene información de una IP mediante la API ipwho.is."""
|
|
try:
|
|
response = requests.get(f"http://ipwho.is/{ip}")
|
|
data = response.json()
|
|
if not data.get("success", False):
|
|
return {"error": data.get("message", "No se encontró información.")}
|
|
return data
|
|
except requests.exceptions.RequestException as e:
|
|
return {"error": str(e)}
|