监控网站服务器状态--邮件告警通知

适用环境:因服务器网站系统宕机及崩溃可做到及时发现及时处理。现因好多项目服务器多为堡垒机登陆,不能安装监控软件,所以我开发了个主动防御脚本,可在运维电脑中运行实时监控,出现问题第一时间发送邮件提醒运维人员及时处理。

准备工作:

  1. python3.8环境安装
  2. 网易163邮箱开启smtp服务
  3. 建议使用钉钉邮箱(接收告警信息,手机端有声音提醒),任何邮箱都能接收邮件

  1. python3下载安装,建议百度搜索国内网站下载安装,国外网站下载较慢.

安装注意事项:

windows系统:一定要勾选PATH)

  Linux系统:默认是python2  (没有测试,不知道是否可以直接用,我使用python3编写的如果不能使用建议安装python3)

  1. 网易163邮箱开启SMTP服务

  1. 钉钉邮箱钉钉账号中可自行查找

 

  1. 以下为脚本代码,复制到文本文档中,另存为.py 文件,变更代码中标注的相关信息即可,代码启动方法:python  xxx.py

 

以下为脚本代码:

from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
import smtplib,time,urllib.request

url = "http://www.xxxxx.com"
#自行更改需要监控的网站系统地址

class SendEmail:
    outbox = "xxxx@163.com"
    # 发件箱地址
    password = ""
    # 授权密码 不是邮箱登录密码
    inbox = "xxxx@dingtalk.com"
    # 收件箱地址
    smtp_server = "smtp.163.com"

    # 发件箱服务器地址

    def __init__(self):
        pass

    @classmethod
    def _format_address(cls, text):
        name, address = parseaddr(text)
        return formataddr((Header(name, "utf-8").encode(), address))

    @classmethod
    def send_email_text(cls):
        msg = MIMEText('服务器故障时间:' +time.strftime('%Y-%m-%d %H:%M:%S') , "plain", "utf-8")
        msg["From"] = SendEmail._format_address("预警报告 <%s>" % SendEmail.outbox)
        # 发件人姓名与发件箱地址
        msg["To"] = SendEmail._format_address("管理员 <%s>" % SendEmail.inbox)
        # 收件人姓名与收件箱地址
        msg["Subject"] = Header("服务器预警报告", "utf-8").encode()
        # 邮件标题

        try:
            server = smtplib.SMTP(SendEmail.smtp_server, 25)
            server.login(SendEmail.outbox, SendEmail.password)
            server.sendmail(SendEmail.outbox, [SendEmail.inbox], msg.as_string())
            server.quit()
            print("邮件发送成功")
        except Exception as es:
            print(str(es))
            print("邮件发送失败")


class e:
    def __init__(self,surl):
        while True:
            time.sleep(2)
            try:
                res = urllib.request.urlopen(surl)
                if res.getcode() == 200:
                    print(surl+' ------ '+time.strftime('%Y-%m-%d %H:%M:%S'))
                else:
                    SendEmail.send_email_text()
                    break
            except:
                SendEmail.send_email_text()
                break


if __name__ == '__main__':
    e(url)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值