42

で提供されるWebサービスがありますhttp://localhost/test/testweb

Webサービスがcurlで稼働しているかどうかを確認するスクリプトを作成したい

curlパラメータが指定されている場合は、200 OKok true falseを返します。これにより、Linuxスクリプトのif-elseブロックを使用できるようになります。

4

6 に答える 6

76
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出力をキャプチャする場合は、おそらく削除します。

于 2012-10-05T14:07:53.263 に答える
0

これを使って:

curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1
cat $TMP_FILE
于 2016-06-10T14:17:36.660 に答える
0

これに対するより良い答えが必要だったので、以下のスクリプトを書きました。

fakePhrase は、ISP の「Search Assist」アドウェアの 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
于 2015-11-18T18:02:43.683 に答える
0

これにより、wget2>&1パイプを介してヘッダーがチェックされ、stderrからstdoutへの grepフィルター -O /dev/nullはページのコンテンツをスローするだけです

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

私はカールしていないことを知っていますが、それでも解決策です

于 2012-10-05T14:09:56.140 に答える