From 1d337ed77a79f7554362c01153a2d5b3b816892b Mon Sep 17 00:00:00 2001 From: "info@pi-farm.de" Date: Wed, 4 Mar 2026 12:56:10 +0000 Subject: [PATCH] main.py aktualisiert --- main.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/main.py b/main.py index 6b813c5..f4f2350 100644 --- a/main.py +++ b/main.py @@ -210,19 +210,24 @@ async def run_remote_task(ip, user, cmd, task_name): async def refresh_status(node_id: int): conn = get_db() node = conn.execute('SELECT * FROM nodes WHERE id = ?', (node_id,)).fetchone() - conn.close() if node: - # Kurzer Check via SSH + # Kurzer Check via SSH, ob Docker antwortet check_cmd = "command -v docker >/dev/null 2>&1 && echo 'Docker Aktiv' || echo 'Bereit (Kein Docker)'" - ssh_cmd = f"ssh -o StrictHostKeyChecking=no {node['user']}@{node['ip']} \"{check_cmd}\"" + ssh_cmd = f"ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 {node['user']}@{node['ip']} \"{check_cmd}\"" try: - result = subprocess.check_output(ssh_cmd, shell=True, timeout=5).decode().strip() - update_node_status(node['ip'], result) - except: - update_node_status(node['ip'], "Offline/Fehler") + # Wir führen den Befehl aus + new_status = subprocess.check_output(ssh_cmd, shell=True).decode().strip() + except Exception: + new_status = "Offline/Fehler" - return RedirectResponse(url="/", status_code=303) + conn.execute('UPDATE nodes SET status = ? WHERE id = ?', (new_status, node_id)) + conn.commit() + conn.close() + return {"status": new_status} # Wir senden nur den Status zurück + + conn.close() + return {"status": "Unbekannt"} if __name__ == "__main__": import uvicorn