Files
biblioteca_conocimiento_lab…/vigilancia/router_control.py
2026-09-05 18:22:56 +02:00

70 lines
1.6 KiB
Python

"""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"<pre>{html.escape(output)}</pre>"
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"<pre>{html.escape(output)}</pre>"
def clientes():
output = _run("cat /proc/net/arp")
return f"<pre>{html.escape(output)}</pre>"
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)())