從 bash 腳本運行互動式 shell

從 bash 腳本運行互動式 shell

我目前正在編寫一個創建 SSH 隧道的 Bash 腳本。完成此操作後,我希望腳本打開一個新的本地(!)互動式 shell,以便我可以在打開 SSH 隧道的情況下在我的系統上工作。

一旦我輸入,exit本地 shell 應該關閉,並且原始腳本繼續運行。

我目前的方法基本上是這樣的:

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

到目前為止,一切正常 - 除了運行本地 shell 之外。我實際上得到了一個 shell,我甚至可以在其中輸入內容,但是當我點擊 時什麼都沒有發生<Return>

知道我做錯了什麼嗎?

答案1

您需要使用-f,以便連線建立後將進入背景。那你將不需要&

ssh -Nf  -L xxx:xxx user@ip

並且處理應該進入你的bash.

相關內容