Ich habe so ein Drehbuch geschrieben. ** (Ich überprüfe jedoch nur, während der Computer ausgeführt wird. Soll ich ihn regelmäßig auf einem PC ausführen, der den ganzen Tag ausgeführt wird, oder auf einem anderen Server?) **
Anders als bei Google Mail können Sie es verwenden, indem Sie den SMTP-Server und die Portnummer bearbeiten.
Es sollte nicht passieren, dass der Webserver heruntergefahren ist, wenn Sie es bemerken, aber es kommt gelegentlich vor. Ich habe weder die Energie noch die Ressourcen, um Zabbix einzuführen, oder es ist ein wenig mühsam. Deshalb habe ich mich dieses Mal entschlossen, es regelmäßig von meinem Heim-PC aus zu überprüfen. Ich habe übrigens versucht, das Ergebnis im lokalen Speicher aufzuzeichnen.
Senden Sie im folgenden Skript ein HTTP-GET. Wenn Sie auf Probleme stoßen, Ein Python-Skript, das Sie per E-Mail benachrichtigt.
Wir haben den Vorgang unter Python3.3 und Windows bestätigt. Wenn Sie einen Mac oder eine andere Python-Version haben, beheben Sie diese bitte rechtzeitig.
(Wir sind nicht verantwortlich für Schäden, die durch die Ausführung des Skripts verursacht werden. Verwenden Sie es daher auf eigenes Risiko.)
webtest.py
#!/usr/bin/python
# coding: UTF-8
#Webserver-Überwachungstool
import http.client,datetime,os
#============Elemente einstellen==============
#G-Mail-Konto
gmail_sender = 'Mit deinem [email protected]'
#G-Mail-Passwort
gmail_passwd = 'Ihr Passwort'
#Fehler Mail Ziel
gmail_to = 'Soshinsaki @ E-Mail-Adresse'
#E-Mail Betreff
mail_subject = 'Es liegt ein Serverfehler vor'
#Server zu überprüfen
servers = ("www.Dein Saito 1.com","www.Ihre Website 2.net")
#Protokoll Zielverzeichnis speichern(Relativer Pfad)
log_dir = "webtestlog"
#=================================
import smtplib
from email.mime.text import MIMEText
#E-Mail senden
def sendmail(data):
global gmail_sender,gmail_passwd,gmail_to,mail_subject
TEXT = data
#Anmelden
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(gmail_sender, gmail_passwd)
message = MIMEText(data,"plain","UTF-8")
message["Subject"] = mail_subject
message["From"] = gmail_sender
message["To"] = gmail_to
try:
server.sendmail(gmail_sender, [gmail_to], message.as_string())
print ('email sent')
except Exception as e:
print (e)
print ('error sending mail')
server.quit()
result = ""
error_detected = False
#Das Format des Ergebnisses. Wenn Sie dies anpassen, können Sie detailliertere Informationen hinzufügen.
def format_result(address,response):
return address +" "+ str(response.status) + " " + response.reason
#Überprüfen Sie das Stammverzeichnis
def checkroot(address):
global result,error_detected
conn = http.client.HTTPConnection( address )
try:
conn.request( "GET", "/" )
except:
result = result + address + " CANNOT GET\n"
error_detected = True
return
response = conn.getresponse()
if response.status != 200:
error_detected = True
result = result + format_result(address,response) + "\n"
conn.close()
#Überprüfen Sie hier alle Server
for each in servers:
checkroot(each)
if not os.path.isdir(log_dir):
os.mkdir(log_dir)
now = datetime.datetime.now()
#Zeitinformationen einbetten
result = str(now) + "\n" + result
#Antwort aufzeichnen
filename = log_dir+"\log_"+now.strftime("%y-%m-%d")+".txt";
f = open(filename, 'a') #Nachtragsmodus
f.write(result) #Ergebnis
f.close()
#Senden Sie eine E-Mail, wenn ein Fehler auftritt
if error_detected:
sendmail(result);
Im Moment wage ich es, einen Fehler in der URL zu machen und einen Fehler zu generieren, aber wenn ein 500er Fehler auftritt oder ein Fehler beim Ausführen von HTTP GET auftritt Sie erhalten eine solche E-Mail.
Ich glaube nicht, dass das Python-Skript direkt ausgeführt werden kann, also werde ich eine Batch-Datei erstellen. (Angenommen, das Skript webtest.py befindet sich in C: \ bin.)
webtest.bat
cd C:\bin
python webtest.py
Wenn Sie keine CD haben, finden Sie webtest.py nicht! Bitte beachten Sie, dass der Fehler auftreten wird.
Versuchen Sie, das obige Skript einmal auszuführen. Wenn es ordnungsgemäß funktioniert, planen Sie es als Nächstes. Dieses Mal habe ich beschlossen, es regelmäßig mit dem Windows-Taskplaner auszuführen.
Systemsteuerung> Suche nach "Zeitplan"> Aufgabe planen
Wenn der Taskplaner gestartet wird, erstellen Sie ihn entsprechend mit "Basisaufgabe erstellen". Halten Sie den Abzug "jeden Tag". (Sie können es später in kurzer Zeit ändern) Wenn Sie das Programm auswählen, wählen Sie die vorherige Batchdatei aus.
Bearbeiten Sie den Trigger.
Es ist laut, jedes Mal einen Blick auf die Eingabeaufforderung zu werfen. Verstecken Sie sie also.
Geben Sie im Eigenschaftenbildschirm Benutzer oder Gruppe ändern> SYSTEM und OK ein Es ist in Ordnung, wenn "Benutzerkonto, das bei der Ausführung der Aufgabe verwendet wird:" zu "NT AUTHORITY \ SYSTEM" wird.
Recommended Posts