#教程# SH脚本检测网站宕机,如果非200状态码邮件通知

前言

博主用军哥的 502 检测脚本修改,定时检测网站非 200 状态码邮件通知,这里要提前安装好 msmtp,以便邮件通知。

图片[1] - #教程# SH脚本检测网站宕机,如果非200状态码邮件通知 - 云线路

教程

下面的代码保存到check200.sh

#!/bin/bash
# author: lonefly
# website: https://www.yunloc.com

CheckURL="https://www.yunloc.com/"

while true; do
    STATUS_CODE=$(curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL)

    if [ "$STATUS_CODE" != "200" ]; then
        echo "$(date '+%H:%M:%S') 当前状态码为 $STATUS_CODE,将在 1 分钟后再次检测..."
        sleep 60
        STATUS_CODE=$(curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL)
        if [ "$STATUS_CODE" != "200" ]; then
            echo "$(date '+%H:%M:%S') 云线路当前状态码为 $STATUS_CODE,发送通知..."
            echo -e "Content-Type: text/plain; charset=UTF-8\nSubject: 云线路宕机了 - $(date '+%H:%M:%S')\nFrom: monitor@jxidc.com\nTo: xxx@189.cn\n\n 云线路宕机了,$(date '+%H:%M:%S') 检查到状态码非 200...." | msmtp xxx@189.cn
            break
        fi
    else
        echo "$(date '+%H:%M:%S') 云线路当前状态码为 $STATUS_CODE,无需通知..."
        break
    fi
done

检测脚本不要放在网站同一台机器上,万一网站机器挂了就无法通知了;

cron里添加:

*/3 * * * * /bin/bash /root/check200.sh >> /home/wwwlogs/nginx_error.log 2>&1

每 3 分钟检测一次,如果检测到非 200,间隔 1 分钟后再次检测,如果还是非 200 状态码就邮件通知。

结语

博主利用了手机邮箱来接受通知,在收 i 就邮箱里设置好邮件短信通知,这样接到宕机邮件就会有短信通知了。

© 本站文章随意转载,但请注明出处!
THE END
点赞13 分享
评论 抢沙发
头像
务必使用真实的邮箱地址评论,虚假邮箱的评论将不通过审核及无回复。
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容