import paramiko import sys import time sys.stdout.reconfigure(encoding='utf-8') 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) shepherd_compose = '''version: "3.8" services: shepherd: image: containrrr/shepherd:latest environment: - SLEEP_TIME=24h - IGNORELIST_SERVICES=nginx-proxy-manager_app nginx-proxy-manager_backup - UPDATE_OPTIONS=--with-registry-auth - ROLLBACK_FAILURE=true - TZ=America/New_York volumes: - /var/run/docker.sock:/var/run/docker.sock:ro deploy: mode: replicated replicas: 1 placement: constraints: - node.role == manager restart_policy: condition: on-failure ''' sftp = c.open_sftp() with sftp.file('/tmp/shepherd_compose.yml', 'w') as f: f.write(shepherd_compose) sftp.close() _, o, _ = c.exec_command("docker stack deploy -c /tmp/shepherd_compose.yml shepherd") print(o.read().decode()) time.sleep(3) _, o, _ = c.exec_command("docker service ps shepherd_shepherd") print(o.read().decode()) c.close()