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) print("1. Updating database.sqlite: removing ID 3, 51, 54...") py_script = """import sqlite3 conn = sqlite3.connect("/var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/database.sqlite") cur = conn.cursor() # Remove proxy hosts 3, 51, 54 cur.execute("DELETE FROM proxy_host WHERE id IN (3, 51, 54)") print(f"Deleted {cur.rowcount} rows from proxy_host (IDs 3, 51, 54)") conn.commit() conn.close() """ cmd_db = "cat << 'EOF' > /tmp/remove_npm.py\n" + py_script + "\nEOF\npython3 /tmp/remove_npm.py\n" stdin, stdout, stderr = c.exec_command(cmd_db) print(stdout.read().decode('utf-8')) err = stderr.read().decode('utf-8') if err: print("DB err:", err) print("2. Removing unused configuration files...") remove_files_cmd = "rm -f /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/nginx/proxy_host/3.conf /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/nginx/proxy_host/51.conf /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/nginx/proxy_host/54.conf" stdin, stdout, stderr = c.exec_command(remove_files_cmd) stdout.channel.recv_exit_status() print("Removed 3.conf, 51.conf, 54.conf") print("3. Testing Nginx configuration syntax inside container...") test_cmd = "docker exec $(docker ps -q -f name=nginx-proxy-manager_app | head -n1) nginx -t" stdin, stdout, stderr = c.exec_command(test_cmd) test_out = stdout.read().decode('utf-8') test_err = stderr.read().decode('utf-8') print("nginx -t:\n", test_out, test_err) if "successful" in test_err or "successful" in test_out: print("4. Reloading Nginx...") stdin, stdout, stderr = c.exec_command("docker exec $(docker ps -q -f name=nginx-proxy-manager_app | head -n1) nginx -s reload") stdout.channel.recv_exit_status() print("Nginx reloaded successfully!") c.close()