HTTPS 上の公開 Web サイトが稼働しているかどうかを確認するために、bash スクリプトに別のコード ブロックを設定しようとしています。CURL を使用してこれを行うことはできますか? CURL 以外に使用できるものがあれば教えてください。よろしくお願いします
答え1
ここでは、curl の代わりに wget を使用して実行する方法を説明します。MacOS にはデフォルトで wget が付属していないことに注意してください。
ウェブリクエストが成功するとコード200が返され、失敗すると300、400、404などが返されます(REST API コード)
1
この行は、Webリクエストが成功した場合は を返し、そうでない場合は0
wget -q -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1
答え2
数多くあるうちの 1 つ:
if curl -s --head --request GET https://example.com | grep "200 OK" > /dev/null; then
echo "mysite.com is UP"
else
echo "mysite.com is DOWN"
fi
答え3
ナギオスcheck_http プラグイン応答内の特定のテキストをチェックするなど、これ以外にも多くのことができます。Nagios 自体とは独立してシェル スクリプトから実行できます。
$ check_http --ssl -H www.google.com -r 'Feeling Lucky'
HTTP OK: HTTP/1.1 200 OK - 11900 bytes in 0.086 second response time |time=0.085943s;;;0.000000 size=11900B;;;0
$ echo $?
0
答え4
同様の質問に対する回答がここにあります:
https://stackoverflow.com/questions/12747929/linux-script-with-curl-to-check-webservice-is-up
この引用はブルハン・ハリドからのものである。
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
出力をキャプチャする場合は、おそらく \n を削除します。
したがって、有効な証明書をチェックせず、http ではなく https を使用する場合は、オプションに -k を追加するだけです。
curl -sL -w "%{http_code}\n" "https://www.google.com/" -o /dev/null
ステータス コード 200 と戻りコード 0 を報告します。
その他すべてについては、スクリプト内で応答を定義する必要があります。