URLをシェルスクリプトで監視する | ex1-lab

URLをシェルスクリプトで監視する

先日、「.htaccess」を編集して記述ミスがあったらしくしばらく「Internal Server Error 500」でHPが停止していました。プロセス監視はしていますがURLのチェックをしていないので下記のシェルスクリプトで監視するようにしました

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/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はテキストファイルから読み取るようにしています

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ 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ステータスコードを取得しています。

スポンサーリンク

0
0