我正在尝试创建一个 bash,通过 SSH 进入一台服务器,然后通过 SSH 进入另一台服务器,然后在第二台服务器上执行命令,然后退出这两台服务器。
到目前为止我得到了
ssh [email protected] "ssh [email protected]; cd Dirk; source venv/bin/activate; python app.py; exit; exit;"
但似乎我无法对从第一个服务器通过 ssh 连接到的第二个服务器执行命令。我该怎么做?
答案1
当您在ssh user@host
没有给定命令作为参数的情况下运行时(如在嵌套调用中一样),ssh 将启动 shell 并等待输入命令。
通过管道输入命令ssh host1 ssh host 2
应该可以工作。使用与您的问题相同的示例:
echo "cd Dirk; source venv/bin/activate; python app.py" \
| ssh [email protected] ssh [email protected]
答案2
ssh -t
也许是你的解决方案
ssh [email protected] -t "ssh [email protected] -t 'cd Dirk; source venv/bin/activate; python app.py; exit; exit;'"