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

監視するURLはテキストファイルから読み取るようにしています

$ 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ステータスコードを取得しています。