Files
2025-12-25 19:58:43 +01:00

60 lines
2.0 KiB
Python

import paramiko
import requests
import time
import re
def get_ssh_data(host, port, user, password):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port=port, username=user, password=password, timeout=10)
# CPU Usage
stdin, stdout, stderr = ssh.exec_command("top -bn1 | grep 'Cpu(s)' | sed 's/.*, *\\([0-9.]*\\)%* id.*/\\1/' | awk '{print 100 - $1}'")
cpu_usage = stdout.read().decode().strip()
# CPU Temp
# For Ubuntu Server
stdin, stdout, stderr = ssh.exec_command("cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null || vcgencmd measure_temp 2>/dev/null")
temp_raw = stdout.read().decode().strip()
if "temp=" in temp_raw:
cpu_temp = temp_raw.replace("temp=", "").replace("'C", "")
elif temp_raw:
cpu_temp = str(float(temp_raw) / 1000)
else:
cpu_temp = "N/A"
# RAM Status
stdin, stdout, stderr = ssh.exec_command("free -m | awk 'NR==2{printf \"%.2f\", $3*100/$2 }'")
ram_usage = stdout.read().decode().strip()
# Disk Space
stdin, stdout, stderr = ssh.exec_command("df -h / | awk 'NR==2{print $5}' | sed 's/%//'")
disk_usage = stdout.read().decode().strip()
ssh.close()
return {
"status": "online",
"cpu": cpu_usage,
"temp": cpu_temp,
"ram": ram_usage,
"disk": disk_usage
}
except Exception as e:
return {
"status": "offline",
"error": str(e)
}
def check_web_service(url):
try:
start_time = time.time()
response = requests.get(url, timeout=5)
latency = int((time.time() - start_time) * 1000)
if response.status_code == 200:
return {"status": "online", "latency": f"{latency}ms"}
else:
return {"status": "error", "code": response.status_code}
except Exception:
return {"status": "offline"}