如何在bash中验证if条件下的时间?

时间:2016-04-29 02:56:24

标签: linux bash ubuntu terminal

我希望你能帮助我给我一些关于我的代码的想法,因为我不知道如果脚本在if条件下20分钟后进入两次,我该如何进行验证。

rc=0
while [ $rc -ne 1 ]; do
do
  ping 192.168.1.89

  if [ "$?" -ne "0" ]; then
     sleep 600 # this are 10 minutes
     # here i need to validate if this script enters two times followed in 20 minutes
     continue

  else
     continue
  fi

done

欢迎任何帮助,谢谢

1 个答案:

答案 0 :(得分:2)

看起来您正在监视IP是否存在连接丢失,并且如果两次间隔10分钟失败,您希望采取措施。要实现这一目标,您只需使用计数器即可。

failures=0
rc=0
while [ $rc -ne 1 ]; do
do
  ping 192.168.1.89
  if [ $? -ne 0 ]; then
     ((failures++))
     echo Ping failures: $failures
     if (( failures < 2 )); then
         sleep 600
     else
         echo Max failures hit
     fi
  else
     failures=0
  fi
done

您可能需要修改ping命令行以发送最大数量的ping(例如,使用-c 3发送最多3个ping)。您可能希望将ping输出重定向到/dev/null