从 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

相关内容