"""Consultas seguras al ASUS RT-AX88U PRO desde la Raspberry.""" import html import subprocess import sys ROUTER = "jjminguez@192.168.50.1" KEY = "/home/pi/.ssh/router_control" SSH_BASE = [ "ssh", "-i", KEY, "-o", "BatchMode=yes", "-o", "ConnectTimeout=8", ROUTER, ] def _run(command): try: result = subprocess.run( SSH_BASE + [command], capture_output=True, text=True, timeout=15, ) except Exception as exc: return f"Error conectando al router: {exc}" if result.returncode != 0: return f"Error del router: {result.stderr.strip()[-300:]}" return result.stdout.strip() def estado(): output = _run( "printf '%s\\n' " "'Modelo='$(nvram get productid) " "'Firmware='$(nvram get firmver).$(nvram get buildno) " "'LAN='$(nvram get lan_ipaddr) " "'WAN='$(nvram get wan0_ipaddr) " "'WiFi24='$(nvram get wl0_radio) " "'WiFi5='$(nvram get wl1_radio); uptime" ) return f"
{html.escape(output)}
" def wifi(): output = _run( "printf '%s\\n' " "'2.4GHz='$(nvram get wl0_radio) " "'5GHz='$(nvram get wl1_radio) " "'6GHz='$(nvram get wl2_radio)" ) return f"
{html.escape(output)}
" def clientes(): output = _run("cat /proc/net/arp") return f"
{html.escape(output)}
" def reiniciar(): return _run("reboot") if __name__ == "__main__": action = sys.argv[1] if len(sys.argv) > 1 else "estado" actions = {"estado": estado, "clientes": clientes, "wifi": wifi} print(actions.get(action, estado)())