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