#!/usr/bin/env python3 """Weist allen aktiven Geraeten (Clients) auf einen Schlag dieselben Zugangsdaten zu -- spart das manuelle Durchklicken jedes einzelnen Geraets in der Weboberflaeche. Aufruf auf dem Server: sudo /srv/tesm/venv/bin/python3 assign_credential_to_all_devices.py [NAME] NAME ist der Name des Zugangsdaten-Eintrags (Standard: "HAPS").""" import sqlite3 import sys from datetime import datetime DB_PATH = "/srv/tesm/sqlite.db" CRED_NAME = sys.argv[1] if len(sys.argv) > 1 else "HAPS" conn = sqlite3.connect(DB_PATH) cred = conn.execute( "SELECT id FROM credentials WHERE name = ? AND deleted_at IS NULL", (CRED_NAME,) ).fetchone() if not cred: print(f"Fehler: Zugangsdaten '{CRED_NAME}' nicht gefunden (oder im Papierkorb).") raise SystemExit(1) credential_id = cred[0] now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") cur = conn.execute( "UPDATE devices SET credential_id=?, last_modified_by=?, last_modified_at=? WHERE deleted_at IS NULL", (credential_id, "Admin (Bulk)", now), ) count = cur.rowcount conn.execute( "INSERT INTO audit_log (ts, username, action, target, details) VALUES (?, ?, ?, ?, ?)", (now, "system", "devices.bulk_credential", CRED_NAME, f"{count} Geräte auf Zugangsdaten '{CRED_NAME}' gesetzt"), ) conn.commit() conn.close() print(f"{count} Geräte auf Zugangsdaten '{CRED_NAME}' (id={credential_id}) gesetzt.")