python 监控网站并发送邮件告警

#!/usr/bin/python3

#coding=utf-8

 

import pycurl
import os
import sys
import time
import email 
import curl
import requests

    
    
def sendEmail(subject,text):
    from smtplib import SMTP
    #定义smtp主机
    HOST="smtp.exmail.qq.com"
    
    #subject 邮件主题  text 邮件内容,必须为英文
    
    #定义邮件收件人
    TO = "[email protected]"
    
    #定义邮件发件人
    FROM="[email protected]"
    
    #组合sendmail方法的邮件主体内容,各段以"\r\n"进行分离
    BODY = '\r\n'.join((     
        "From: %s" %"admin",
        "TO: %s" %TO,
        "subject: %s" %subject,
        "",
        text
    ))
    
    #创建一个smtp对象
    server = SMTP()
    #链接smtp主机    
    server.connect(HOST,'25')
    #邮箱账号登
    server.login(FROM,"xxxx")
    #发送邮件    
    server.sendmail(FROM,TO,BODY)
    #端口smtp链接
    server.quit()

##通过num参数来传递次数,以此控制是否发送邮件
def check_web():
    url='http://www.xxx.com'
    re = requests.get(url)

    ###网站如果能打开,则能查到ICP信息,故以ICP做匹配关键词,或者也可以匹配其他的词
    r=re.text.find('ICP')
    text=""
    subject=""
    num=0
    if (r<0):
        print("normal")
        num=0
    else:
        text="at the time "+time.strftime("%Y/%m/%d %H:%M:%S")+" the "+url+" is can not open"
        subject="the "+url+"is wrong"
        #sendEmail(subject,text)
        num=1
    return num,text,subject    
            
            
i=0
while True:
    a=check_web()
    print('+++++++++++++++++++',a)
    if (a[0] ==1):
        i=i+a[0]
    else:
        i=0
    print('邮件开关',i)
    if (i>3 and i <6):
        sendEmail(a[2],a[1])
    time.sleep(10)

 

 

 

后续可以将监控的网站定义成一个列表,然后循环列表去监控每个网站,或者将网站url设为参数来查询

你可能感兴趣的:(python 监控网站并发送邮件告警)