コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
全カテゴリ
カテゴリ未導入のページ
利用者の投稿記録
最近の更新
特別ページ一覧
ヘルプ
新規作成
新しい記事
検索
検索
表示
ログイン
個人用ツール
ログイン
簡易サイト稼働チェッカーのソースを表示
ページ
ノート
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
表示
サイドバーに移動
非表示
←
簡易サイト稼働チェッカー
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
== 概要 == ZABBIX や Nagios 等の監視ツールを用意するまでもなく、ただサイトにアクセスしてレスポンスコードが 200 じゃなかったら指定したメールアドレスに通知するシェルスクリプト。 == 必要なもの == curl と MTA(/usr/sbin/sendmail)。 == コード == <pre> #!/bin/bash ### ### [サイト稼働監視スクリプト] ### 指定した URL にアクセスし、レスポンスコードが 200 じゃなかったらメールで通知する。 ### ### USAGE(crontab): 毎時30分にチェックする例。 ### 30 * * * * sh /path/to/check_web.sh https://example.com/ ### ### オプション: -f をつけると正常時(200)でも通知する。 ### $ sh check_web.sh -f https://example.com/ ### ## 通知設定 ### 通知先アドレス TO="foo@example.com" ### 差出人アドレス FROM="bar@example.com" ## スクリプト自身のパスへ移動 cd $(dirname "${0}") ## Log ファイルのパス LOGFILE="./log/$(date +%Y-%m).log" ### Log ディレクトリがなければ作成 if [ ! -d ./log ]; then mkdir ./log fi ## 引数が2つより多かったらスクリプトを実行しない if [ $# -gt 2 ]; then exit 0 fi ## 検証するURL TARGET_URL="" ## 通知するかどうかフラグ(0:正常時は非通知/1:常に通知) NOTIFY=0 ## スクリプトへの引数を確認 for ARG in "$@" ; do case "${ARG}" in -f) NOTIFY=1;; *) TARGET_URL=${ARG} esac done ## 検証した日時 CHECK=$(date +"%Y-%m-%d %H:%M:%S") ## TARGET_URL へのアクセスを試みる MESSAGE=$(curl -o /dev/null -s -w %{HTTP_CODE} ${TARGET_URL}) ## ロギング echo "${CHECK}:${TARGET_URL}:${MESSAGE}" >> ${LOGFILE} ## 強制送信じゃない、または curl 結果 http_code が 200 だったらスクリプト終了 if [[ ${NOTIFY} -eq 0 && "${MESSAGE}" = 200 ]]; then exit 0 fi ## メール通知 SUBJECT="[Check web] ${TARGET_URL}" MTA="/usr/sbin/sendmail" Msg() { echo "To:${TO} Subject: ${SUBJECT} MIME-Version: 1.0 Content-Type: Text/Plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit ${TARGET_URL} へのリクエストが下記のレスポンスコードでした。 確認してください。 レスポンスコード:${MESSAGE} チェック日時:${CHECK} " } ## main Msg | ${MTA} -f${FROM} ${TO} exit 0 # EOF </pre> == 参考・引用 == * https://qiita.com/Kakimoty_Field/items/754df3a181187fbb517c [[Category:シェルスクリプト]][[Category:Linux]]
簡易サイト稼働チェッカー
に戻る。