import paramiko import sys sys.stdout.reconfigure(encoding='utf-8') key_path = r'C:\Users\Snarf\.ssh\id_ed25519_snarfnet' c = paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect("140.44.4.71", username="root", key_filename=key_path, timeout=10) py_script = """ import sqlite3, datetime conn = sqlite3.connect('/var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/database.sqlite') cur = conn.cursor() now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') updates = [ (45, '140.44.4.34', 443, 'https'), (41, '140.44.4.62', 443, 'https'), (37, '140.44.4.34', 443, 'https'), ] for pid, host, port, scheme in updates: cur.execute('''UPDATE proxy_host SET forward_host = ?, forward_port = ?, forward_scheme = ?, allow_websocket_upgrade = 1, http2_support = 1, modified_on = ? WHERE id = ?''', (host, port, scheme, now, pid)) print(f"Updated host {pid} -> {scheme}://{host}:{port}") conn.commit() for row in cur.execute('SELECT id, domain_names, forward_host, forward_port, forward_scheme FROM proxy_host WHERE id IN (45, 41, 37)'): print("DB Row:", row) conn.close() """ # Write script to /tmp/update_db.py on NPM host and execute sftp = c.open_sftp() with sftp.open('/tmp/update_db.py', 'w') as f: f.write(py_script) sftp.close() stdin, stdout, stderr = c.exec_command("python3 /tmp/update_db.py") print(stdout.read().decode()) err = stderr.read().decode() if err: print("Err:", err) c.close()