2011-02-10 123 views
5

我試圖設置一個腳本來打開一個終端,執行一個SSH到遠程服務器,並執行一個命令(在我的情況下尾部-F日誌文件)。通過ssh執行命令,然後運行bash

我至今是以下

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終端,只是SSH -t ...,然後看到以下內容:

some lines 
from the log 
^CConnection to server closed. 

但是,如果我做

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

然後我得到一個錯誤nonexistant命令未找到,然後我下拉到遠程服務器上的bash ...

有沒有人有任何建議或提示如何讓這個去?提前致謝。

回答

2

在這裏,有一個討厭的劈:

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

這似乎工作。謝謝:) chx在他的回答中有更多的解釋 – vmpstr

1
--init-file filename 
--rcfile filename 

從文件名中一個交互式shell中執行的命令(而不是`〜/ .bashrc中')。

因此運行bash時帶--rcfile指向運行尾部-F的腳本。

1

爲什麼不明顯? 「如果你有SIGINT,執行一個交互式shell。」

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