Ejecute un shell interactivo desde un script bash

Ejecute un shell interactivo desde un script bash

Actualmente estoy escribiendo un script Bash que crea un túnel SSH. Una vez hecho esto, me gustaría que el script abra un nuevo shell interactivo local (!) para poder trabajar en mi sistema con el túnel SSH abierto.

Una vez que escribo, exitel shell local debería cerrarse y el script original continuará ejecutándose.

Mi enfoque actual básicamente se ve así:

#!/usr/bin/env bash

set -e

ssh -N user@ip -L xxx:xxx &
SSH_CONNECTION=${!}

trap "kill ${SSH_CONNECTION}" ERR

sleep 3
bash -i

kill ${SSH_CONNECTION}

Hasta ahora, todo funciona, excepto ejecutar el shell local. De hecho, obtengo un caparazón e incluso puedo escribirlo, pero no sucede nada cuando presiono <Return>.

¿Alguna idea de lo que estoy haciendo mal?

Respuesta1

Debe usarlo -fpara que la conexión pase a segundo plano una vez que se establezca. Entonces no necesitarás &:

ssh -Nf  -L xxx:xxx user@ip

y el procesamiento debería llegar a su bash.

información relacionada