Files
tesm/srv/poe_manager/generate_ips.py
T
alientimandClaude Sonnet 5 82bfeb17ed Initial commit: PoE Manager modern UI rebuild
- Neues, eigenständiges Frontend (Sidebar, zentriertes Logo in der Topbar,
  Dark/Light-Theme, Karten-Dashboard, Toasts/Modals statt Bootstrap)
- Oeffentliches Kurz-Dashboard ohne Login (Status-Uebersicht)
- Browser-SSH-Terminal (paramiko, plattformunabhaengig) zum Testen von
  Switch-Zugangsdaten inkl. interaktiver Host-Key-Bestaetigung
- Granulares Rechtesystem mit Gruppen (Devices/Switches-Berechtigungen)
- Aufgeraeumtes Backend mit konfigurierbaren Pfaden, auto-generierten
  Secrets statt hart codierter Werte im Original

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 12:18:49 +02:00

53 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""
Gibt pipe-getrennt die Zugangsdaten aller aktiven Geräte + ihrer Switche aus.
Wird von poe.sh (Bash) konsumiert, um Erreichbarkeit zu prüfen und im
Fehlerfall den PoE-Port neu zu starten.
"""
import sqlite3
from app import decrypt_password, DB_PATH
def generate_ips_list():
conn = sqlite3.connect(DB_PATH)
conn.row_factory = sqlite3.Row
switches = {
row["hostname"]: row
for row in conn.execute("SELECT hostname, ip, username, password FROM switches")
}
devices = conn.execute("""
SELECT mac, rpi_ip, port, name, switch_hostname
FROM devices
WHERE is_active=1
""").fetchall()
conn.close()
for dev in devices:
switch = switches.get(dev["switch_hostname"])
if switch:
switch_ip = switch["ip"]
switch_user = switch["username"]
switch_pass = decrypt_password(switch["password"])
else:
switch_ip = ""
switch_user = ""
switch_pass = ""
port = dev["port"] or ""
print(
f"{dev['rpi_ip']}|"
f"{dev['name']}|"
f"{switch_ip}|"
f"{dev['switch_hostname'] or 'kein Switch'}|"
f"{port}|"
f"{switch_user}|"
f"{switch_pass}|"
f"{dev['mac']}"
)
if __name__ == "__main__":
generate_ips_list()