で提供されるWebサービスがありますhttp://localhost/test/testweb
Webサービスがcurlで稼働しているかどうかを確認するスクリプトを作成したい
curlパラメータが指定されている場合は、200 OK
ok true falseを返します。これにより、Linuxスクリプトのif-elseブロックを使用できるようになります。
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
出力をキャプチャする場合は、おそらく削除します。
これを使って:
curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1
cat $TMP_FILE
これに対するより良い答えが必要だったので、以下のスクリプトを書きました。
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
これにより、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;
私はカールしていないことを知っていますが、それでも解決策です