在 shell 脚本中,我执行以下操作:
#!/bin/sh
while true; do ssh -o ExitOnForwardFailure=yes -L 8080:localhost:80 -N server; sleep 1; done &
... rest of the script, which uses the tunnel as made above ...
这保证了隧道始终保持打开状态,因此在连接丢失的情况下会重新打开。这个隧道在主脚本的其他部分用到了,这里不再赘述。这些部分可以处理一个不起作用的隧道,它们只是稍后重试。
当主脚本死亡时,例如由于SIGTERM
or SIGINT
,我希望该while
循环也停止。主脚本死后无需保持该隧道打开。
在 shell 脚本中执行此操作的常用方法是什么?请注意,我想要两件事:
- 防止重新执行
ssh
命令 ssh
尽快停止并断开当前正在进行的会话
我不确定如何在 shell 脚本中执行所有这些操作。
请注意,我目前在 plain 工作,但如果需要sh
我可以继续工作。bash