2011-02-10 11 views
5

Próbuję skonfigurować skrypt, który otwiera terminal, wykonuje ssh na zdalny serwer i wykonuje polecenie (tail -F logfile w moim przypadku).wykonywanie polecenia przez ssh, a następnie uruchamianie bash

Co mam tak daleko jest następujące

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

Działa to do pewnego stopnia. -t zapewnia, że ​​sygnały takie jak SIGINT są wysyłane za pośrednictwem poleceń działających zdalnie.

Jednak, gdy ctrl-c ogon, naprawdę chciałbym upuścić do bash terminalu na zdalnym serwerze. Teraz, jeśli ctrl-c ogon, to ogon jest zamknięty, co powoduje, że ssh wychodzi, co powoduje, że cały terminal jest zamknięty.

Chciałbym, aby ogon został zakończony i pozostawiono powłokę bash na serwerze zdalnym.

Próbowałem następujące:

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

ale to nie wydają się działać. Oznacza to, że jeśli uruchomię to bez gnome-terminal, tylko ssh -t ..., a następnie zobaczyć, co następuje:

some lines 
from the log 
^CConnection to server closed. 

ale jeśli robię

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

Następnie pojawia się błąd, że nonexistantcommand nie zostanie znaleziony, a następnie I do spadnie do bash na zdalnym serwerze ...

Czy ktoś ma jakieś sugestie lub wskazówki, jak to zrobić? Z góry dziękuję.

Odpowiedz

2

Tutaj mają paskudny Hack:

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

To wydaje się działać. Dzięki :) Chx ma więcej wyjaśnień w swojej odpowiedzi na pytanie, dlaczego – vmpstr

1
--init-file filename 
--rcfile filename 

wykonywanie poleceń z pliku (zamiast `~/.bashrc ') w interaktywnej powłoki.

więc uruchom bash z --rcfile wskazując na skrypt z uruchomionym końcem -F.

1

Dlaczego nie zrobić oczywiste? "Jeśli masz SIGINT, uruchom interaktywną powłokę."

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