#!/usr/bin/env python3 from __future__ import annotations import os import sys from pathlib import Path import paramiko HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245") USER = os.getenv("NOMAD_SSH_USER", "ubuntu") PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805") REPO = "/home/ubuntu/gitlab-instance-0a899031_cnomadcna" ROOT = Path(__file__).resolve().parent.parent FILES = [ "backend/ntfy_push.py", "backend/main.py", "backend/settings.py", ] def main() -> None: c = paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect(HOST, username=USER, password=PASSWORD, timeout=30) sftp = c.open_sftp() try: for rel in FILES: local = ROOT / rel tmp = f"/tmp/{Path(rel).name}" dest = f"{REPO}/{rel.replace(chr(92), '/')}" sftp.put(str(local), tmp) _, o, _ = c.exec_command( f"echo '{PASSWORD}' | sudo -S cp {tmp} {dest} && sudo chown ubuntu:ubuntu {dest}", timeout=60, get_pty=True, ) print(f"uploaded {rel}: {o.read().decode().strip()}") _, o, _ = c.exec_command( f"echo '{PASSWORD}' | sudo -S systemctl restart cnomadcna-api.service && systemctl is-active cnomadcna-api.service", timeout=60, get_pty=True, ) sys.stdout.buffer.write(o.read()) finally: sftp.close() c.close() if __name__ == "__main__": main()