在继续工作之前,我希望能够ssh到远程主机并运行一些重复的命令。
我一直在尝试下面的命令,没有运气:
ssh [email protected] 'source /path/to/my/bashrc; ls /logs'
命令运行正常,但是我没有提交一个shell来继续我的工作。
我在这里错过了什么?
你错过了一件事。 如果你提供了ssh命令来运行,会话一结束就会结束。 这意味着只要你的ls命令结束,也将ssh返回。 为了实现你所要求的行为,你需要添加bash / shell到最后并请求tty分配,如下所示:
ssh -tt [email protected] 'source /path/to/my/bashrc; ls /logs; bash'
或者你可以用你喜欢的其他shellreplacebash命令。
你没有得到一个shell,因为当你传递一个命令到远程运行的SSH时,它会replace shell的调用。
如果您想在login时发生事情,则应将其添加到帐户的.bashrc 。 如果帐号是共享的,那么(1)停止这样做,(2)shell有多种方式可以确定谁正在login,并有条件地做事情。
当我有很多命令在远程主机上运行时,我喜欢使用Here Documents [1]
ssh $SERVER << EOF command 1 command 2 command 3 EOF