5

我正在尝试设置一个打开终端的脚本,对远程服务器执行 ssh 并执行命令(在我的情况下为 tail -F 日志文件)。

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

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"'

然后我收到一个错误,即找不到 nonexistantcommand,然后我确实下拉到远程服务器上的 bash ......

有没有人对如何进行此操作有任何建议或提示?提前致谢。

4

3 回答 3

2

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

gnome-terminal -e 'ssh -t server "echo \"tail -F logfile;rm /tmp/foo\" > /tmp/foo; bash --rcfile /tmp/foo"'
于 2011-02-10T16:57:45.363 回答
1
--init-file filename
--rcfile filename

在交互式 shell 中从文件名(而不是 `~/.bashrc')执行命令。

所以使用--rcfile 指向运行tail -F 的脚本运行bash。

于 2011-02-10T17:04:04.320 回答
1

为什么不做显而易见的事?“如果您有 SIGINT,请执行交互式 shell。”

gnome-terminal -e 'ssh -t server "trap \"exec sh -i\" INT; tail -F logfile"'
于 2011-02-10T17:19:34.587 回答