用curl来检查webservice的Linux脚本已经启动了

我有一个在http://localhost/test/testweb提供的web服务

我想写一个脚本来检查web服务是否curl

如果有一个给定的curl参数,则返回200 OK OK true false以便我可以使用它是if-else块在Linux脚本中

Solutions Collecting From Web of "用curl来检查webservice的Linux脚本已经启动了"

 curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null 
  • -s =无声的cURL输出
  • -L =遵循重定向
  • -w =自定义输出格式
  • -o =将HTML输出重定向到/dev/null

例:

 [~]$ curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null 200 

如果我要捕获输出,我可能会删除\\n

这将通过wget 2>&1管道检查标题stderr到stdout grep filters -O /dev/null只是抛出页面的内容

 if [ "\`wget http://example.org/ -O /dev/null -S --quiet 2>&1 | grep '200 OK'\`" != "" ]; then echo Hello; fi; 

我知道不卷曲,但仍然是一个解决方案

我需要更好的答案,所以我写了下面的脚本。

伪造的短语用于检测ISP“搜索协助”广告软件的HTTP请求。

 #!/bin/bash fakePhrase="verizon" siteList=( 'http://google.com' 'https://google.com' 'http://wikipedia.org' 'https://wikipedia.org' 'http://cantgettherefromhere' 'http://searchassist.verizon.com' ) exitStatus=0 function isUp { http=`curl -sL -w "%{http_code}" "$1" -o temp_isUp` fakeResponse=`cat temp_isUp | grep $fakePhrase` if [ -n "$fakeResponse" ]; then http=$fakePhrase fi case $http in [2]*) ;; [3]*) echo 'Redirect' ;; [4]*) exitStatus=4 echo "$1 is DENIED with ${http}" ;; [5]*) exitStatus=5 echo "$1 is ERROR with ${http}" ;; *) exitStatus=6 echo "$1 is NO RESPONSE with ${http}" ;; esac } for var in "${siteList[@]}" do isUp $var done if [ "$exitStatus" -eq "0" ]; then echo 'All up' fi rm temp_isUp exit $exitStatus 

用这个:

 curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1 cat $TMP_FILE 

同@burhan-khalid补充说:

 --connect-timeout 3 --max-time 5 

test_command='curl -sL \ -w "%{http_code}\\n" \ "http://www.google.com:8080/" \ -o /dev/null \ --connect-timeout 3 \ --max-time 5' if [ $(test_command) == "200" ] ; then echo "OK" ; else echo "KO" ; fi