Molet

通过shell脚本监控网站状态并邮件报警

Molet linux 2023-01-25 531浏览 0

一、首先下载sendEmail客户端(sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bash、perl和web站点使用。)

# wget http://soft.ileiming.com/sendEmail-v1.56.tar.gz

解压并更改存放路径(sendEmail直接解压就可以使用,不需要编译)

# tar -zxvf sendEmail-v1.56.tar.gz
# mv sendEmail-v1.56 /usr/local/sendEmail

二、监控脚本

#!/bin/bash

for url in $(cat /data/static/urllist)
do
        s=`curl -I -m 10 -o /dev/null -s -w %{http_code} $url`
        if [ "$s" -eq "200" ]
                then
                echo $url service is OK.
        else
                /usr/local/sendEmail/sendEmail -f "Box address" -t "Inbox address" -cc "A copy of the email address" -u "$url service was down" -m "$url service was down at `date +%Y%m%d%H%M`" -s smtp.163.com -xu emailname -xp emailpassword
                echo $url >> /data/static/downlist
		sed -i '/'"$url"'/d' /data/static/urllist
	    fi
done

for url in $(cat /data/static/downlist)
do
        s=`curl -I -m 10 -o /dev/null -s -w %{http_code} $url`
        if [ "$s" -eq "200" ]
                then
                /usr/local/sendEmail/sendEmail -f "Box address" -t "Inbox address" -cc "A copy of the email address" -u "$url Service is restored to normal" -m "$url Service is restored to normal at `date +%Y%m%d%H%M`" -s smtp.163.com -xu emailname -xp emailpassword
		echo $url >> /data/static/urllist
                sed -i '/'"$url"'/d' /data/static/downlist
        else
                echo $url The service is still down.
	    fi
done

       此脚本直接拿去是无法使用的,因为里面还有一些配置参数需要修改,当然如果为了方便,也可以把这些配置参数做成变量复制的形式,之后就只需要调用变量就OK。
“Box address”(替换成发件箱地址)
“Inbox address” (替换成收件箱地址)
“A copy of the email address” (替换成抄送邮件地址)
emailname (替换成邮箱登陆用户名)
emailpassword (替换成邮箱登陆密码)

       此脚本分两部分,前面部分是抓去/data/static/urllist文件里面的域名(考虑到会监测多个域名,我们只需要把需要监测的域名填写到urllist里面即可),脚本会监测域名列表里的域名的状态吗,如果是200,直接忽略,如果是非200状态,会发邮件报警,并把域名转储到/data/static/downlist文件里,并删除urllist里该域名的记录。第二部分是监控/data/static/downlist文件,如果所有监控的域名都正常,这个文件应该是空的,我们不需要去管这个文件,如果有访问不正常的域名,shell脚本会把不正常的域名转储到此文件,如果该域名已经恢复正常,shell也同样把把域名从该文件剔除,并转储到/data/static/urllist文件中。

继续浏览有关 LINUX技术 的文章
发表评论