与服务器断开连接后调用脚本

与服务器断开连接后调用脚本

我有一个为工作编写的脚本,它将调用一个带有参数的函数。我使用参数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将停止循环。

相关内容