我有以下问题:
我有一台可以通过 ssh 访问的远程机器,它可以通过 Web 界面提供一些数据。
我可以使用 OpenSSH LocalForwarding 打开隧道并启动远程服务器:
ssh [email protected] -L 127.0.0.1:3333:localhost:4000 ./start.sh
然后,在另一个终端(或从 GUI)上,我可以启动一个浏览器,例如:
firefox localhost:3333/whatever
并访问我的应用提供的内容。
使用后,我只需按 [CTRL-C] 即可start.sh
关闭服务器、连接和隧道。
到目前为止,一切都很好。
问题是:是否可以编写一个脚本来组合所有内容,以便在浏览器终止时关闭隧道?
更准确地说,我想要一个脚本:
- 打开隧道并启动远程服务器(如上)。
- 在正确的端口(可以随机生成)上自动打开浏览器(firefox 可以,但不是必须的)。
- 在浏览器运行时保持隧道畅通。
- 当浏览器终止时(我知道可能还有其他打开的窗口,但这超出了重点)它应该向
SIGHUP
服务器( )发送信号(start.sh
)。 - 当远程服务器终止时隧道应该关闭(这应该是上述设置的自动)
我想在严格需要的时间内保持隧道和服务器的正常运行,避免“忘记关闭”,因为如果我必须手动执行它可能会发生。
我怎样才能做到这一点?