Curl脚本监控web程序, 自动重启并Email给管理员(可多个) 示例

Linux 路人甲 188℃ 0评论

第一例

#!/bin/bash
#
# Server: localhost:88, www.example.com, www.example.com:8080....
# Service: httpd, nginx, resin, tomcat...
#

Server=localhost
Service=httpd
UserMail=("user1@example.com" "user2@example.com" "user3@example.com")
LOG=/var/log/Curl-`date +%F`.log

###############################################################################

Date=`date "+%F %H:%M:%S"`

Curlit(){
    curl --connect-timeout 15 --max-time 20 --head --silent "$Server" | grep '200'
}
Mailit(){
        for i in ${UserMail[*]} ; do
                grep -A 20 "$Date" $LOG | mail -s "${ServerName} $1" $i
        done
}

Doit(){
    if ! Curlit; then
        echo -e "\n${Date}\nERR: \n `/etc/init.d/$Service restart`" >> $LOG

        sleep 10

        if Curlit ; then
            Mailit "${Service} 重启完成"
        else
            Mailit "${Service} 异常, 请登录系统查看"
        fi
    fi
}
Doit

第二例:

#!/bin/bash
#
# http_code不等于200,视为异常。重启服务, 并发送邮件给管理员。
# Server_Name:  apache nginx mysql resin。
# for Server_Name in httpd mysql resin nginx ; do ;监测程序状态; done

Check_www="localhost"
Server_Name="httpd"
Admin_Mail=("user1@example.com" "user2@example.com")
Status_Code=`curl -o /dev/null -s -w %{http_code} ${Check_www}`

Log_Dir="/var/log/checkIng"
Log_File="$Log_Dir/check_${Server_Name}.log"

Date_Time(){ date "+%F %H:%M:%S" ;}
Grep_Time=$(Date_Time)
Print_Log(){ echo "[ $(Date_Time) ]  $1" >> $Log_File ;}

[[ -d ${Log_Dir} ]] || mkdir -p ${Log_Dir}

for Mail in ${Admin_Mail[*]}; do

    if [ ${Status_Code} -ne 200 ]; then

        /etc/init.d/${Server_Name} status >> ${Log_File}

        Print_Log  "${Check_www}  ${Server_Name}  已停止响应。状态码:${Status_Code}"

        tail -2 ${Log_File} | mail -s "站点状态监测" $Mail

        /etc/init.d/${Server_Name} restart >> ${Log_File}

        if [ $? -ne 0 ]; then
            echo "主机: ${HOSTNAME} ${Server_Name}无法启动 !!!" mail -s "请登录${${HOSTNAME}}系统查看" $Mail
        fi
    fi
done

分享是种美德:运维博客 » Curl脚本监控web程序, 自动重启并Email给管理员(可多个) 示例

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址