パブリック HTTPS サイトが稼働しているかどうかを確認する Bash スクリプト

パブリック HTTPS サイトが稼働しているかどうかを確認する Bash スクリプト

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 を報告します。

その他すべてについては、スクリプト内で応答を定義する必要があります。

関連情報