import paramiko c = paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect("140.44.4.71", username="root", key_filename=r'C:\Users\Snarf\.ssh\id_ed25519_snarfnet', timeout=10) # Create /data/topology directory on host c.exec_command("mkdir -p /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/topology") # Read topology files locally with open('docs/snarfnet_homelab_topology.html', 'r', encoding='utf-8') as f: html_data = f.read() with open('docs/snarfnet_homelab_topology.png', 'rb') as f: png_data = f.read() # Send html stdin, stdout, stderr = c.exec_command("cat > /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/topology/snarfnet_homelab_topology.html") stdin.write(html_data) stdin.close() stdout.read() # Send png stdin, stdout, stderr = c.exec_command("cat > /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/topology/snarfnet_homelab_topology.png") stdin.write(png_data) stdin.close() stdout.read() # Verify files inside NPM container cmd = "docker exec $(docker ps -q --filter name=nginx-proxy-manager_app) ls -la /data/topology" _, o, e = c.exec_command(cmd) print("Files inside NPM container at /data/topology:\n" + o.read().decode()) print("Stderr:\n" + e.read().decode()) c.close()