Posted at

シェルスクリプトでウェブサイトのダウンタイムを検出する

ウェブサイトにアクセス出来ない時間(ダウンタイム)が発生しないかチェックしたい時にブラウザリロード連打でチェックするのが面倒くさい人向けです。

例えばデプロイ中にダウンタイムが発生しないかチェックしたい場合などに便利かもしれません。


check.sh

#!/usr/bin/env bash

readonly CHECK_URL="https://example.com/"
while true; do
status=$(curl -sL --head -m 3 -w "%{http_code}" "$CHECK_URL" -o /dev/null)
if [ $status = 200 ]; then
printf '.'
else
printf 'F'
fi
sleep 0.5
done

CHECK_URL で設定した URL へ 0.5 秒おきにアクセスして、

レスポンスのステータスコードが 200 だった場合は標準出力に「.」を、

200 以外だった場合は「F」を出力します。

「F」が出てきたらダウンタイムが発生しているなー、「.」に戻ったら復活したなーという感じで可視化できます。終了は CTRL + C キーなどで。