#!/usr/bin/env python3 """Pull hotspot portal files that usually contain the SaaS URL.""" from __future__ import annotations import paramiko from pathlib import Path JUMP = ("100.80.255.113", "otantik", "DeararbsFr2@") MK = ("172.30.0.1", "admin", "demopass") OUT = Path(r"c:\laragon\www\light-otantik-nux\scripts\_mk_portal") FILES = [ "portal/portal-config.js", "portal/README.md", "portal/MIKROTIK_PORTAL_CONFIG.md", "portal/portal_fapshi_config.php", "portal/get_plans.php", "portal/process_payment.php", "portal/api.json", "hotspot/api.json", "intro/portal-config.js", "intro/README.md", "Apology/portal-config.js", "Apology/README.md", "problem_solve/portal-config.js", "problem_solve/README.md", "config.rsc", ] def main() -> None: OUT.mkdir(parents=True, exist_ok=True) jump = paramiko.SSHClient() jump.set_missing_host_key_policy(paramiko.AutoAddPolicy()) jump.connect(JUMP[0], username=JUMP[1], password=JUMP[2], timeout=20, allow_agent=False, look_for_keys=False) chan = jump.get_transport().open_channel("direct-tcpip", (MK[0], 22), ("127.0.0.1", 0)) mk = paramiko.SSHClient() mk.set_missing_host_key_policy(paramiko.AutoAddPolicy()) mk.connect(MK[0], username=MK[1], password=MK[2], sock=chan, timeout=20, allow_agent=False, look_for_keys=False) sftp = mk.open_sftp() for remote in FILES: local = OUT / remote.replace("/", "_") try: sftp.get(remote, str(local)) print("OK", remote, local.stat().st_size) except Exception as e: print("FAIL", remote, type(e).__name__, e) sftp.close() mk.close() jump.close() if __name__ == "__main__": main()