import asyncio import asyncssh SCRIPT = r""" set -e echo '=== apt update ===' echo '123456789987654321' | sudo -S apt-get update -qq echo '=== install docker.io ===' echo '123456789987654321' | sudo -S DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker.io docker-compose >/dev/null echo '=== enable docker ===' echo '123456789987654321' | sudo -S systemctl enable --now docker echo '123456789987654321' | sudo -S usermod -aG docker dimon echo '=== docker version ===' echo '123456789987654321' | sudo -S docker --version echo '=== portainer volume ===' echo '123456789987654321' | sudo -S docker volume create portainer_data echo '=== portainer run ===' echo '123456789987654321' | sudo -S docker run -d -p 9000:9000 --name portainer --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts echo '=== containers ===' echo '123456789987654321' | sudo -S docker ps echo '=== ufw allow 9000 ===' (echo '123456789987654321' | sudo -S ufw allow 9000/tcp 2>/dev/null && echo ufw-ok) || echo ufw-not-installed echo DONE """ async def main(): async with asyncssh.connect( "132.243.17.164", port=2292, username="dimon", password="123456789987654321", known_hosts=None, ) as conn: r = await conn.run(SCRIPT, timeout=900) print(r.stdout) if r.stderr: print("STDERR:", r.stderr[-3000:]) print("RC:", r.returncode) asyncio.run(main())