URLをシェルスクリプトで監視する
先日、「.htaccess」を編集して記述ミスがあったらしくしばらく「Internal Server Error 500」でHPが停止していました。プロセス監視はしていますがURLのチェックをしていないので下記のシェルスクリプトで監視するようにしました
#!/bin/bash
# URLが記述されたテキストファイルのパス
URL_FILE="/home/admin/url.txt"
cat ${URL_FILE} | while read URL
do
# URLにGETリクエストを送信し、レスポンスを取得
response=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
# レスポンスコードが200(OK)以外の場合、メールで通知する
if [ "$response" != "200" ]; then
BODY="Error: $URL is down http_code:$response"
echo $BODY | mail -s "URL monitoring error" [メールアドレス]
fi
# 10秒間スリープ
sleep 10
done
#!/bin/bash
# URLが記述されたテキストファイルのパス
URL_FILE="/home/admin/url.txt"
cat ${URL_FILE} | while read URL
do
# URLにGETリクエストを送信し、レスポンスを取得
response=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
# レスポンスコードが200(OK)以外の場合、メールで通知する
if [ "$response" != "200" ]; then
BODY="Error: $URL is down http_code:$response"
echo $BODY | mail -s "URL monitoring error" [メールアドレス]
fi
# 10秒間スリープ
sleep 10
done
#!/bin/bash # URLが記述されたテキストファイルのパス URL_FILE="/home/admin/url.txt" cat ${URL_FILE} | while read URL do # URLにGETリクエストを送信し、レスポンスを取得 response=$(curl -s -o /dev/null -w "%{http_code}" "$URL") # レスポンスコードが200(OK)以外の場合、メールで通知する if [ "$response" != "200" ]; then BODY="Error: $URL is down http_code:$response" echo $BODY | mail -s "URL monitoring error" [メールアドレス] fi # 10秒間スリープ sleep 10 done
監視するURLはテキストファイルから読み取るようにしています
$ cat /home/admin/url.txt
https://example.com
https://blog.example.com
https://www.example.jp
$ cat /home/admin/url.txt
https://example.com
https://blog.example.com
https://www.example.jp
$ cat /home/admin/url.txt https://example.com https://blog.example.com https://www.example.jp
curlのオプションの説明は以下となります
- 「-o /dev/null」は、レスポンスのボディを /dev/null に出力しているので、HTTP レスポンスコードやヘッダーのみ取得するようにしています
- 「-w “%{http_code}"」は、HTTPステータスコードを取得しています。
ディスカッション
コメント一覧
まだ、コメントがありません