2011-02-10 18 views
5

Estoy tratando de configurar un script que abra un terminal, haga un ssh a un servidor remoto y ejecute un comando (tail -F logfile en mi caso).ejecutando un comando sobre ssh, y luego ejecutando bash

Lo que tengo hasta ahora es la siguiente

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

Esto funciona hasta cierto punto. -t asegura que las señales como SIGINT se envían a través de los comandos que se ejecutan de forma remota.

Sin embargo, cuando ctrl-c la cola, realmente me gustaría bajar a un terminal de bash en el servidor remoto. En este momento, si ctrl-c la cola, entonces la cola se cierra, lo que hace que ssh salga, lo que hace que toda la terminal se cierre.

Lo que me gustaría es que la cola se termine y quede con un shell bash en el servidor remoto.

he intentado lo siguiente:

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

pero eso no parece funcionar. Es decir, si me quedo esto sin gnome-terminal, simplemente ssh -t ..., a continuación, vea lo siguiente:

some lines 
from the log 
^CConnection to server closed. 

Pero, si lo hago

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

Entonces consigo un error que nonexistantcommand no se encuentra, y luego I do desplegable a un bash en un servidor remoto ...

¿Alguien tiene alguna sugerencia o sugerencia sobre cómo hacerlo funcionar? Gracias por adelantado.

Respuesta

2

Aquí, tienen un corte desagradable:

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

Esto parece funcionar. Gracias :) chx tiene más de una explicación en su respuesta de por qué – vmpstr

1
--init-file filename 
--rcfile filename 

ejecutar comandos de nombre de archivo (en lugar de `~/.bashrc ') en un shell interactivo.

así que ejecute bash con --rcfile apuntando a un script que se ejecuta en la cola -F.

1

¿Por qué no hacer lo obvio? "Si tienes un SIGINT, ejecuta un shell interactivo".

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