我正在尝试设置一个打开终端的脚本,对远程服务器执行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 ......
有没有人对如何实现这一目标有任何建议或提示?提前谢谢。
答案 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"'