bash脚本循环直到web服务器响应200

分享于 

2分钟阅读

互联网

  繁體

问题:

我想创建一个bash脚本,它监视web服务,直到它返回200状态响应,

例如:


#!/bin/bash


HTTPD=`curl -A"Web Check" -sL --connect-timeout 3 -w"%{http_code}n""http://127.0.0.1" -o /dev/null`


until ["$HTTPD" =="200" ]; do


 printf '.'


 sleep 5


 service nginx restart


done



or



while ["$HTTPD" !="200" ];


do


 service nginx restart


 sleep 5


 if ["$HTTPD" =="200" ];then


 break;


 else


 service nginx restart


 fi


done



编辑:可工作的版本


#!/bin/bash



HTTPD=`curl -A"Web Check" -sL --connect-timeout 3 -w"%{http_code}n""http://127.0.0.1" -o /dev/null`


until ["$HTTPD" =="200" ]; do


 printf '.'


 sleep 3


 service nginx restart


 HTTPD=`curl -A"Web Check" -sL --connect-timeout 3 -w"%{http_code}n""http://127.0.0.1" -o /dev/null`


done




答案1:

不要再发明轮子了,有很多工具可以做到这个,你需要将HTTP= curl +行添加到循环中。


答案2:

一旦满足条件,循环就退出。


while true


do


 HTTPD=`curl -A "Web Check" -sL --connect-timeout 3 -w "%{http_code}n" "http://127.0.0.1" -o /dev/null`


 until [ "$HTTPD" == "200" ]; do


 printf '.'


 sleep 3


 service nginx restart


 HTTPD=`curl -A "Web Check" -sL --connect-timeout 3 -w "%{http_code}n" "http://127.0.0.1" -o /dev/null`


 done


 sleep 5


done



最外面的while true是一个无限循环,只有在杀死(检查)进程时才会退出



相关文章