1 votos

Ejecución de un comando localmente después de ssh tunneling

Tengo un archivo de script ./run_app.sh que contiene lo siguiente:

 ssh -L 8888:localhost:8888 ubuntu@address
./run_website.sh   # it should be executed locally
 

pero intenta ejecutar la segunda línea en la máquina remota. En realidad, quiero ejecutarlo en mi pc. ¿Alguna idea?

3voto

Chrisii Puntos 586

Hola y bienvenidos a Super Usuario.

Después de la ssh -L 8888:localhost:8888 ubuntu@address, la secuencia de comandos funda a sí mismo en el servidor remoto.

Usted puede pasar las banderas -fN a ssh (-f es para el tenedor en el fondo y -N es ejecutar ningún comando).

Entonces, después de que el túnel se establece, su guión se reanuda la ejecución en la línea siguiente en su máquina.

El inconveniente es que el ssh conexión va a quedar en un segundo plano, incluso después de que el guión está terminado.

Una solución es abandonando la -N indicador y ejecutar sleep 10 en el servidor remoto:

ssh -f -L 8888:localhost:8888 ubuntu@address sleep 10

De esta manera, si el túnel no se utiliza, ya sea cuando run_website.sh termina o después de 10 segundos si el script no se usar el túnel (es decir, falla por alguna razón), se desconectará automáticamente.

Obviamente, esto supone que run_website.sh utiliza el túnel.

Si no le importa automáticamente la terminación del túnel, a continuación, seguir adelante y utilizar simplemente -fN:

ssh -fN -L 8888:localhost:8888 ubuntu@address

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: