ssh 然后一旦将 ssh 连接到另一台服务器并执行命令并退出

ssh 然后一旦将 ssh 连接到另一台服务器并执行命令并退出

我正在尝试创建一个 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;'"

相关内容