#!/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()