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

  显示原文与译文双语对照的内容
134 3

我正在设置一个脚本来打开一个终端,对远程服务器执行 ssh,并执行命令( 。case -F日志文件) 。

我目前所做的是

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

这在一定程度上。-t确保通过远程运行的命令发送诸如SIGINT之类的信号。

但是,当我在 ctrl-c,我真的想把它放到远程服务器上的bash终端 现在,如果我对尾部进行 ctrl,那么尾部就会关闭,这导致ssh退出,这会导致整个终端关闭。

我想要在远程服务器上终止并留下一个 bash shell 。

我已经尝试了以下操作:

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

但这似乎不起作用。也就是说,如果我没有gnome终端运行这个,就只需要 ssh -t 。然后,查看以下内容:

some lines
from the log
^CConnection to server closed.

但是如果我

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

然后我发现一个错误,即找不到 nonexistantcommand,然后我将在远程服务器上执行 bash drop 。

谁有什么建议或者建议?先谢谢了。

时间:原作者:0个回答

92 1

这里有一个讨厌的黑客:

gnome-terminal -e 'ssh -t server"echo"tail -F logfile;rm/tmp/foo">/tmp/foo; bash --rcfile/tmp/foo"'
原作者:
77 1
--init-file filename
--rcfile filename

在交互式 shell 中执行来自文件名( 而不是 `~/。bashrc'的命令。

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

原作者:
135 5

为什么不这么做?"如果你有一个 SIGINT,执行交互式 shell 。"

gnome-terminal -e 'ssh -t server"trap"exec sh -i" INT; tail -F logfile"'
原作者:
...