Execute um shell interativo a partir de um script bash

1

Atualmente, estou escrevendo um script Bash que cria um túnel SSH. Feito isso, gostaria que o script abrisse um novo shell interativo (!) Local para que eu possa trabalhar no meu sistema com o túnel SSH aberto.

Depois de digitar exit , o shell local deverá ser fechado e o script original continuará a ser executado.

Minha abordagem atual basicamente se parece com isso:

#!/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}

Até agora, tudo funciona - exceto executar o shell local. Eu realmente obtenho um shell, e posso até mesmo digitar nele, mas nada acontece quando eu bato <Return> .

Alguma ideia do que estou fazendo errado?

    
por Golo Roden 01.02.2017 / 09:28

1 resposta

1

Você precisa usar -f para que a conexão entre em segundo plano quando for estabelecida. Então você não precisará do & :

ssh -Nf  -L xxx:xxx user@ip

e o processamento deve entrar no seu bash .

    
por 01.02.2017 / 10:26