2 votos

Devuelve el control a bash script cuando se utiliza /usr/bin/open para cerrar el túnel SSH

Quiero escribir un bash script que:

  • establece un túnel SSH
  • lanza un cliente VNC local ( vncviewer (el visor de RealVNC en mi caso)
  • cierra el túnel SSH una vez que el vncviewer sale de

El mejor esfuerzo hasta ahora:

ssh -L 5900:localhost:5900 <my IP address> -N &
pid=$!
/Applications/VNC\ Viewer.app/Contents/MacOS/vncviewer localhost:5900
kill "$pid"

No pude conseguir que funcionara con open Sin embargo. Esto funciona, pero el script sale dejando un túnel abierto detrás:

ssh -L 5900:localhost:5900 <my IP address> -N -f sleep 10
open -a 'VNC Viewer' --args localhost:5900 

Utilizando open parece ser más intuitivo y fácil de usar.

2voto

Desde man open :

 -W  Causes open to wait until the applications it opens (or that were already open) have exited. 

Así que, a menos que Visor VNC es sólo un lanzador, que ejecuta

ssh -L 5900:localhost:5900 <my IP address> -N &
pid=$!
sleep 5
open -W -a 'VNC Viewer' --args localhost:5900
kill "$pid"

debería funcionar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X