![与服务器断开连接后调用脚本](https://linux22.com/image/40365/%E4%B8%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%96%AD%E5%BC%80%E8%BF%9E%E6%8E%A5%E5%90%8E%E8%B0%83%E7%94%A8%E8%84%9A%E6%9C%AC.png)
我有一个为工作编写的脚本,它将调用一个带有参数的函数。我使用参数ssh
进入我们的服务器。我的问题是:有没有办法调用该方法,以便如果/当我与服务器断开连接时,它会自动调用脚本?例如,我可以ssh
进入我们的一台服务器。我们reverse-ssh
设置了一条隧道,因此一小时后连接就会关闭。我希望在断开连接后,脚本将被再次调用,提示输入主机名。
#!/bin/bash
echo "Provide hostname: "
read host
createSSHFunction()
{
arg1=$1
ssh $host
}
createSSHFunction $host
答案1
递归很少能解决任何问题:-)
您想要做的事情可以通过一个简单的循环来完成
while :; do
ssh $host
done
每当ssh
退出时,脚本都会进入循环的下一次迭代,并重新执行它。
在 中while :
,:
是一个 noop 命令,它总是返回一个真值,所以while
永远不会结束。如果您需要某种方法来终止循环,您需要弄清楚该标准是什么,并对其进行测试。
答案2
您需要无限循环,但完成后防止脚本再次运行。
while ((1)); do script.sh; sleep 3; done
三秒钟的睡眠给你一个打破循环的机会。完成 ssh 后,退出。三秒钟后,脚本将再次开始。如果您不希望发生这种情况,Ctrl-C将停止循环。