


Python überwacht Websites automatisch und sendet E-Mail-Benachrichtigungen
Vorwort
Da einige Websites jeden Tag überprüfen müssen, ob es Probleme gibt, benötigen sie einen Alarmüberwachungsmechanismus. Dazu müssen Sie die E-Mail-Adresse angeben, die Sie senden und die E-Mail, die Sie erhalten. Mit Ihrer E-Mail-Adresse können Sie die Website automatisch überwachen.
Hier wird Python3.5 verwendet
Plug-ins, die installiert werden müssen:
1. smtplib : Wird zum Senden von E-Mails benötigt. Gehe zu
2. pycurl: Wird beim Zugriff auf die Website benötigt
3. Linecache: Wird beim Lesen der TXT-Website benötigt Liste
Spezifische Ideen:
Das Python-Programm liest Website-Informationen stapelweise aus txt und verwendet Curl.py, um einen Browser für den Zugriff zu simulieren die Website und schreiben Sie die Ergebnisse des Besuchs in eine Datei im Format Ihres Website-Namens-Datums.txt. Es gibt mehrere Situationen:
1. Wenn Sie feststellen, dass sie nicht geöffnet werden kann, Senden Sie direkt eine E-Mail. Fordern Sie auf, dass die Website nicht geöffnet werden kann
2. Es wurde festgestellt, dass sie geöffnet werden kann. Lesen Sie die letzte Zugriffssituation in der Datei (lesen Sie die letzte Zeile der txt Datei),
1) Wenn Sie feststellen, dass sie beim letzten Mal nicht geöffnet werden konnte, senden Sie eine E-Mail, um Sie daran zu erinnern, dass die Website wiederhergestellt wurde
2) Wenn Sie feststellen, dass sie nicht geöffnet werden kann Kann das letzte Mal geöffnet werden (Rückgabecode 200), notieren Sie einfach das Protokoll des Website-Zugriffs. Das ist alles
Insgesamt 4 Dateien
E-Mail .py ist eine E-Mail-Klasse, die hauptsächlich zum Aufrufen beim Senden von E-Mails verwendet wird. Hier müssen Sie Folgendes beachten: Ändern Sie in Ihrem Fall Ihre E-Mail-Adresse (msg['From']), Ihre E-Mail-Serveradresse (SMTP-Adresse) und Ihre E-Mail-Passwort (SMTP.login)
Email.py
#!/usr/bin/python #-*- coding:utf-8 -*- import sys import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart class Email_send(object): def __init__(self,msgTo,data2,Subject): self.msgTo=msgTo self.data2=data2 self.Subject=Subject def sendEmail(self): # (attachment,html) = content msg = MIMEMultipart() msg['Subject'] = self.Subject msg['From'] = 'xxxx@xxxx.com.cn' msg['To'] = self.msgTo html_att = MIMEText(self.data2, 'html', 'utf-8') #att = MIMEText(attachment, 'plain', 'utf-8') msg.attach(html_att) #msg.attach(att) try: smtp = smtplib.SMTP() smtp.connect('smtp.xxxx.com', 25) smtp.login(msg['From'], 'xxxx') #改成自己的邮箱密码 smtp.sendmail(msg['From'], msg['To'].split(','), msg.as_string()) return('邮件发送成功') except Exception as e: print('--------------sss------',e) def curl(self): import pycurl c=pycurl.Curl() #url="www.luoan.com.cn" #indexfile=open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","wb") c.setopt(c.URL,url) c.setopt(c.VERBOSE,1) c.setopt(c.ENCODING,"gzip") #模拟火狐浏览器 c.setopt(c.USERAGENT,"Mozilla/5.0 (Windows NT 6.1; rv:35.0) Gecko/20100101 Firefox/35.0") return c
Curl.py ist eine Datei, die hauptsächlich dazu dient, simulierte Browserbesuche auf Websites auszuführen und Ergebnisse zurückzugeben
#!/usr/bin/python #-*- coding:utf-8 -*- import sys import pycurl class Curl(object): def __init__(self,url): self.url=url def Curl_site(self): c=pycurl.Curl() #url="www.luoan.com.cn" #indexfile=open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","wb") c.setopt(c.URL,self.url) c.setopt(c.VERBOSE,1) c.setopt(c.ENCODING,"gzip") #模拟火狐浏览器 c.setopt(c.USERAGENT,"Mozilla/5.0 (Windows NT 6.1; rv:35.0) Gecko/20100101 Firefox/35.0") return c
site_moniter.py Diese Datei ist das Hauptprogramm . Es führt hauptsächlich die obige Funktion aus und liest die Website-Liste in der TXT-Datei. Wenn die Website nicht geöffnet werden kann, wird eine E-Mail gesendet.
Bitte Hinweis:
1. Ändern Sie xxxx@xxxx.com in Ihre eigene E-Mail-Adresse,
2. Ändern Sie den Dateipfad in Ihren tatsächlichen Pfad
#!/usr/bin/python #-*- coding:utf-8 -*- import pycurl import os import sys import linecache import time #引入事件类,用来获取系统当前时间 #from ceshi import Student from Email import Email_send from Curl import Curl #bart = Student('mafei',59) #bart.print_score() def script(urls,type): msgTo = 'xxxx@xxxx.com' now_time=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) j=1 # data2=[{'aa':'aa'}] for url_split in urls: #print(url_split) url_1=url_split.split('---') url=url_1[1] recovery_title = "监控通知----%s url:%s" % (url_1[0], url) + "在" + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) + "已经恢复" down_title = "监控通知----%s url:%s" % (url_1[0], url) + "在" + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) + "无法打开" #print('~~~~~~~~~~~~~~~~~~~') #print(url) #引用爬去网站的类,调用结果 url_result = Curl(url) c = url_result.Curl_site() try: c.perform() code = str(c.getinfo(c.HTTP_CODE)) print(code+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') except Exception as e: print('--------错误信息:--------',e) #indexfile.close() #c.close() code = str(c.getinfo(c.HTTP_CODE)) # print(code+'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') filename = '%s-%s.txt' % (url_1[0], time.strftime("%Y-%m-%d", time.localtime(time.time()))) #判断如果在网站无法打开的情况下 if code == '0' or code=='400' or code=='500' or code=='404': resolveTime = 0 Connection_Time = 0 Transfer_Total_Time = 0 Total_Time = 0 # print('为000000000000000000000000000000000000000000') data3 = '网站:%s无法打开%s' % (url_1[0], url) # indexfile.close() # c.close() #判断网站如果挂了就发邮件 stat3 = Email_send(msgTo, data3, down_title) resole=stat3.sendEmail() print(resole) print(data3 + '邮件已经发送') else: #resolveTime = str(c.getinfo(c.NAMELOOKUP_TIME) * 1000) + " ms" # Connection_Time=str(float(c.getinfo(c.CONNECT_TIME)*1000-c.getinfo(c.NAMELOOKUP_TIME)*1000))+" ms" #Connection_Time = str(c.getinfo(c.CONNECT_TIME) * 1000 - c.getinfo(c.NAMELOOKUP_TIME) * 1000) + " ms" # Connection_Time=round(float(Connection_Time)) #Transfer_Total_Time = str(c.getinfo(c.TOTAL_TIME) * 1000 - c.getinfo(c.PRETRANSFER_TIME) * 1000) + " ms" #Total_Time = str(c.getinfo(c.TOTAL_TIME) * 1000) + " ms" # data2=data # data={'url':url,'HTTP CODE':code,'resolveTime':resolveTime,'Connection_Time':Connection_Time,'Transfer_Total_Time':Transfer_Total_Time,'Total_Time':Total_Time} print('网站可以正常打开') #f = open(filename, 'a',encoding='utf-8') file_exit=os.path.exists(filename) #print(file_exit) #判断这个日志文件存不存在 if(file_exit): #读取文件最后一行,为了读取出来最后一次的状态值 file = open(filename, 'r',encoding='utf-8') linecount = len(file.readlines()) data = linecache.getline(filename, linecount) file.close if data == '': print('这是'+data+'为空的数据') else: print('其他信息%s'%(data)) explode = data.split('----') #判断如果读取出来的值,最后一次是异常的情况就告警 if explode[3]=='0\n' or explode[3]=='400\n' or explode[3]=='500' or explode[3]=='404': data3 = '网站:%s在%s已经恢复%s' % (url_1[0], now_time,url) stat3 = Email_send(msgTo, data3, recovery_title) resole = stat3.sendEmail() print(resole) print(data3 + '邮件已经发送') else: print('最后一次记录为其他值:%s'%(explode[3])+'-----') else: print('文件不存在') data2 = '\n' + url_1[0] + '----' + url + '-----' + time.strftime("%H:%M:%S", time.localtime(time.time())) + '-------' + code print('data2数据写入成功:' + data2) file = open(filename, 'a', encoding='utf-8') file.write(data2) file.close # bart = Student(data2,59) # bart.print_score() if __name__ == "__main__": type = "监控通知-测试" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) data1=['公司门户---www.luoan.com.cn','公司平台---yun.luoan.com.cn'] #script(data1,type) #中心层面的网站清单 file=open('D:\python\site_moniter\zhongxin.txt') data2=[] while 1: line2 =file.readline() print(line2) if not line2: break data2.append(line2[0:-1]) #data2=['www.luoan.com.cn','yun.luoan.com.cn','www.qq.com'] print(data2) title="监控通知-中心"+ time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) script(data2,title)
Zusammenfassung
Verwendung Dies ist im Grunde das Ende von Pythons Methode zur automatischen Überwachung von Websites und zum Versenden von E-Mail-Benachrichtigungen Es wird für die Lernarbeit aller hilfreich sein.
Weitere Artikel zur automatischen Überwachung von Websites durch Python und zum Versenden von E-Mail-Benachrichtigungen finden Sie auf der chinesischen PHP-Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Fastapi ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...
