通过ssh执行命令,然后运行bash

时间:2011-02-10 16:51:23

标签: bash ssh gnome-terminal

我正在尝试设置一个打开终端的脚本,对远程服务器执行ssh,然后执行命令(在我的情况下使用tail -F logfile)。

到目前为止我所拥有的是以下内容

gnome-terminal -e 'ssh -t server "tail -F logfile"'

这在某种程度上有效。 -t确保通过远程运行的命令发送SIGINT之类的信号。

然而,当我按下ctrl-c尾部时,我真的想要下载到远程服务器上的bash终端 。现在,如果我按下ctrl-c尾部,则尾部关闭,导致ssh退出,导致整个终端关闭。

我想要的是尾部被终止并留在远程服务器上的bash shell。

我尝试了以下内容:

gnome-terminal -e 'ssh -t server "tail -F logfile; /bin/bash"'

但这似乎不起作用。也就是说,如果我在没有gnome-terminal的情况下运行它,只需要ssh -t ...,那么请看以下内容:

some lines
from the log
^CConnection to server closed.

但是,如果我这样做

gnome-terminal -e 'ssh -t server "nonexistantcommand; /bin/bash"'

然后我收到一个错误,找不到nonexistant命令,然后我下拉到远程服务器上的bash ......

有没有人对如何实现这一目标有任何建议或提示?提前谢谢。

3 个答案:

答案 0 :(得分:2)

在这里,有一个讨厌的黑客:

gnome-terminal -e 'ssh -t server "echo \"tail -F logfile;rm /tmp/foo\" > /tmp/foo; bash --rcfile /tmp/foo"'

答案 1 :(得分:1)

--init-file filename
--rcfile filename
  

在交互式shell中执行来自filename(而不是`〜/ .bashrc')的命令。

所以运行bash,其中--rcfile指向运行tail -F的脚本。

答案 2 :(得分:1)

为什么不明显? “如果你有一个SIGINT,那就执行一个交互式shell。”

gnome-terminal -e 'ssh -t server "trap \"exec sh -i\" INT; tail -F logfile"'