bashスクリプトから対話型シェルを実行する

bashスクリプトから対話型シェルを実行する

現在、SSH トンネルを作成する Bash スクリプトを作成しています。これが完了したら、スクリプトで新しいローカル (!) 対話型シェルを開き、SSH トンネルを開いた状態でシステムで作業できるようにしたいと思います。

入力するとexitローカル シェルが閉じられ、元のスクリプトが引き続き実行されます。

私の現在のアプローチは基本的に次のようになります。

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

これまでのところ、ローカル シェルの実行を除いて、すべて正常に動作しています。実際にシェルが取得され、入力もできますが、 を押しても何も起こりません<Return>

何が間違っているのか分かりますか?

答え1

-f接続が確立されるとバックグラウンドに移行するように、を使用する必要があります。その後、 は必要ありません&

ssh -Nf  -L xxx:xxx user@ip

そして、処理は に送られるはずですbash

関連情報