webサーバのエラー検出してmail送信

onnga-wasabi 47views 更新:2017年8月18日

webサーバが何らかの原因で正常な動作を出来なくなった時、エラーが発生していることをメールでサイトの管理者に知らせるスクリプト

#!/bin/bash
mailreceiver="user@example.com"
getpage=`wget http://www.onga-testtotest.tk`
$getpage
src="先頭固定表示投稿です。"
findhtml=`ls | grep index.html`
if [ $findhtml ];then
        dst=`less index.html | grep "<p>先頭固定表示" |sed -e "s/<p>//g" | sed -e "s/<\/p>//g"`
        if [ $dst = $src ];then
                echo "ok"
        else
                echo "error"
                date >> /var/log/nginx/error_mail.log
                lastaccess=`tail -n 1 /var/log/nginx/access.log | cut -d " " -f 4 | tail -c 9`
                lastmail=`head -n 1 /var/log/nginx/error_mail.log | cut -d " " -f 4`
                if [ $lastaccess=$lastmail ];then
                        echo "error" | mail to $mailreceiver 
                fi
        fi
        rm index.html
else
        echo "cannot access"
        date >> /var/log/nginx/error_mail.log
        lastaccess=`tail -n 1 /var/log/nginx/access.log | cut -d " " -f 4 | tail -c 9`
        lastmail=`head -n 1 /var/log/nginx/error_mail.log | cut -d " " -f 4`
        if [ $lastaccess=$lastmail ];then
                echo "cannot access-500" | mail -s "500" -r fromlinux to $mailreceiver
        fi
fi

$srcと$dstについてはデータベースが死んでいた場合に、本来のページ情報とは別の情報が返されるため、サイトのタイトルや、サブタイトルのように決まった文章を設定しておきます。
メールを送信するタイミングは前回のエラーを修正してから新たにエラーが見つかったときです。エラーの修正時に/var/log/nginx/error_mail.logを初期化することが前提となります。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません