在两次SSH连接后执行命令

时间:2017-01-12 18:10:02

标签: bash unix ssh

我正在尝试ssh到两个连续的服务器,然后在成功连接到第二个服务器后执行命令。

我目前能够ssh到两台服务器背靠背没问题:

ssh -t server1 ssh server2

系统提示我输入server1的密码,然后使用授权密钥自动连接到server2。

在我进入server2之后,我想打开一个Jupyter笔记本:jupyter notebook

所以要冗长,如果我自己一行一行地执行这个,我想要复制:

ssh server1
ssh server2
jupyter notebook

以下是我尝试过的一些事情:

尝试1

ssh -t server1 ssh server2 -t jupyter notebook
ksh: jupyter:not found
Connection to server2 closed
Connection to server1 closed

所以这里我在server2中成功,但运行我的命令失败了。我想我需要做的是以某种方式加载我的.bashrc文件,以便定义我的jupyter路径。但我也无法成功地做到这一点:

尝试2

ssh -t server1 ssh server2 -t source /filepath/.bashrc && jupyter notebook
ksh: .: syntax error at line 45: `(' unexpected
Connection to server2 closed.
Connection to server1 closed.

所以现在我认为我没有正确加载.bashrc。或许我的论点不合时宜,我不太确定。

1 个答案:

答案 0 :(得分:0)

这是引用"的简单问题,因此命令在各自的服务器上是自包含的:

ssh -t ujump 'ssh server1 -t "source /filepath/.profile && jupyter notebook"'
#                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (A)
#             ..............................................................(B)

命令(A)在server1上执行 命令(B)在ujump上执行