Python Server -Überwachungsskript

Python Server -Überwachungsskript

Mit dem Python Server -Überwachungsskript können Sie überwachen, ob Ihr Server oder Computer aktiv ist und ausgeführt wird. Es kann Ihnen zeigen, wie viel Ausfallzeit Ihr Computer oder Server hatte. Wir verwenden Server -Sockets, um zu überprüfen, ob der spezifische Port auf einem Server geöffnet ist oder nicht. Der Befehl Ping, einen einfachen regulären Computer und die SSL zu überwachen, um zu überprüfen, ob der bestimmte Server eine SSL -Verbindung benötigt oder nicht. Für die Serverüberwachung habe ich die verwendet Visual Studio Code Interpreter Tool.

Datei Python erstellen.py

Öffnen Sie den Python -Dolmetscher und erstellen Sie eine neue Datei mit dem Namen Server.py und speichern es an einem bestimmten Ort, an dem es leicht zugegriffen werden kann. Wenn die Datei erstellt wurde, fügen Sie einige Importbefehle hinzu, um wichtige Pakete wie folgt zu importieren:

  • Steckdose: Um einen bestimmten Port mit verschiedenen Servern auf einem bestimmten Socket zu verbinden
  • SSL: Für die Verpackung der Socket -Verbindung erforderlich
  • Terminzeit: Es wurde verwendet, um zu überprüfen, wann der Server ausgefallen oder aktiv war
  • Essiggurke: Wird zum Speichern der Geschichte des Computers und der Betriebszeit des Computers sowie zur Verbreitung der Daten vom Lauf zum Ausführen mit diesem Programm verwendet
Socket importieren
SSL importieren
Aus der DateTime -Importdatetime importieren
Gurke importieren

Wir verwenden die Plattform Und Subprozess Pakete, die uns mitteilen, welches Betriebssystem wir ausführen, e.G., Unix oder Fenster.

Subprozess importieren
Importplattform

Erstellen Sie eine Serverklasse

Lassen Sie uns eine Klasse namens erstellen Server() und erstellte eine erste Methode, bei der es sich um eine Konstruktor -Methode handelt. Wir haben einige Attribute für den Server hinzugefügt, e.G., jeder Unix oder reguläre Computer. Schauen wir uns jeweils an:

  • Name: Geben Sie den Namen eines Servers an
  • Hafen: Die Portnummer, mit der wir eine Verbindung herstellen möchten
  • Verbindung: Teilen Sie den Verbindungstyp, e.G., SSL oder Ping
  • Priorität: Sagen Sie uns die Serverpriorität, e.G., Sie können Warnungen festlegen, wenn Sie Priorität festlegen
  • Geschichte: Um die Serververlaufsliste zu halten
  • Alarm: Wenn Sie Warnungen an Ihre E -Mail senden möchten
Klasse Server ():
Def __init __ (Selbst, Name, Port, Verbindung, Priorität):
selbst.Name = Name
selbst.Port = Port
selbst.Verbindung = Verbindung.untere()
selbst.Priorität = Priorität.untere()
selbst.Geschichte = []
selbst.alarm = falsch

Erstellen Sie eine Methode, um die Verbindung zu überprüfen

Um die Serververbindung zu testen, haben wir eine andere Methode in der Server () -Klassentwicklung check_connection () erstellt. Bei dieser Methode müssen wir drei Variablen definieren wie:

  • Nachricht: Wird verwendet, um eine Nachricht anzuzeigen, wenn die Verbindung hergestellt oder fehlgeschlagen ist, die ursprünglich leer ist
  • Erfolg: Wird verwendet, um festzustellen, ob die Verbindung erfolgreich ist oder nicht
  • Jetzt: Erhalten Sie den aktuellen Datum und die aktuelle Uhrzeit, während Sie die Verbindung überprüfen
Def check_connection (Selbst):
msg = ""
Erfolg = falsch
jetzt = datetime.Jetzt()

Schreiben Sie nun den folgenden Code in derselben Datei und verwenden Sie die Versuchen Sie es mit Anweisung, Wir überprüfen die Verbindung für verschiedene Serververbindungstypen, e.G. schlicht, SSL und Ping. In diesem Versuchen Sie es mit Anweisung, Wir haben eine Anweisung mit einer Verbindung von schmucklos Typ. Es wird eine Verbindung mit dem bereitgestellten herstellen Name und alle Hafen Nummer, die Sie angegeben haben. Wenn die Verbindung erfolgreich ist, generiert sie a Erfolgsmeldung, e.G., Nachricht. Es wird die drehen Erfolg variabel zu WAHR und es wird kein Alarm an E -Mail gesendet. Wir haben sonst wenn Anweisung mit einem anderen Verbindungstyp und in der letzten wenn auch Anweisung haben wir a Klingeln() Funktion aufgerufen. Im außer Aussage, Wenn die Steckdose keine Zeit mehr hat, wird eine Verbindung abgelehnt oder etwas anderes, sie wird a angezeigt Fehlernachricht.

versuchen:
Wenn Selbst.Verbindung == "Ebene":
Steckdose.create_connection ((selbst selbst.Name, Selbst.Port), Timeout = 10)
msg = f "self.Name ist auf. Am Port self.Port mit self.Verbindung"
Erfolg = wahr
selbst.alarm = falsch
elif selbst.Verbindung == "SSL":
SSL.Wrap_socket (Socket.create_connection (
(selbst.Name, Selbst.Port), Timeout = 10))
msg = f "self.Name ist auf. Am Port self.Port mit self.Verbindung"
Erfolg = wahr
selbst.alarm = falsch
anders:
Wenn Selbst.Klingeln():
msg = f "self.Name ist auf. Am Port self.Port mit self.Verbindung"
Erfolg = wahr
selbst.alarm = falsch
außer Sockel.Auszeit:
msg = f "Server: self.Name Timeout. Am Port self.Hafen"
außer (ConnectionRefusedError, ConnectionReseterror) als e:
msg = f "Server: self.Name e "
außer Ausnahme als E:
msg = f "Keine Ahnung??: e "

Andererseits, wenn die Erfolgsstatus Und Alarm Sind FALSCH, es wird es an verändern WAHR und senden Sie eine Alarm an die bereitgestellte E -Mail und rufen Sie die an create_history () Funktion zum Erstellen von a Geschichte.

Wenn Erfolg == Falsch und Selbst.alert == false:
# Alarm senden
selbst.alert = true
EMAIL_ALERT (Selbst.Name, f "msg \ n now", "[email protected] ")
selbst.Create_history (MSG, Erfolg, jetzt)

Definieren Sie eine Methode, um Geschichte zu erstellen

Im create_history () Methode, Wir haben einige angehängt Attribute mit maximal Grenze definiert, und wenn die Geschichte Grenze überschreitet, es wird löschen der ältere.

Def create_history (self, msg, Erfolg, jetzt):
history_max = 100
selbst.Geschichte.anhängen ((MSG, Erfolg, jetzt))
Während Len (Selbst.Geschichte)> history_max:
selbst.Geschichte.Pop (0)

Definieren Sie die Pingfunktion, um eine Verbindung herzustellen

Der Klingeln() Die Funktion wird den Server oder Computer pingen. Wenn der Ping ist erfolgreich, Es wird wahr ausgegeben, und wenn die Verbindung fehlgeschlagen, Es wird zurückkehren FALSCH.

definitiv (Selbst):
versuchen:
Ausgabe = Subprozess.check_output ("ping - 1 ".Format ('n' wenn Plattform.System(
).Lower () == "Windows" sonst 'c', Selbst.Name), Shell = True, Universal_Newlines = True)
Wenn 'unerreichbar' in der Ausgabe:
falsch zurückgeben
anders:
RECHT WAHR
außer Ausnahme:
falsch zurückgeben

Erstellen Sie die Liste der Server

Jetzt müssen wir sicherstellen, dass wir das ausführen Hauptprogramm. Der Wenn Sie sich befinden prüft, ob es das Hauptprogramm ist oder nicht. Der Versuchen Sie es mit Anweisung Wille Belastung der Kellner Gurkendatei Wenn es bereits existiert. Wenn es nicht existiert, die außer Aussage wird ein ganzes bekommen neue Liste von Servern. Für einen der Server, Verbindungen wird sein überprüft und Geschichte wird gerettet. Andererseits müssen wir speichern unser Daten zur Gurke Datei Verwendung der entsorgen Stellungnahme.

Wenn __name__ == "__main__":
versuchen:
Server = Gurke.Laden (Open ("Server.Gurke "," rb "))
außer:
Server = [
Server ("Reddit.com ", 80," schlicht "," hoch "),
Server ("MSN.com ", 80," schlicht "," hoch "),
Server ("SMTP.Google Mail.com ", 465," SSL "," High "),
Server ("192.168.1.164 ", 80," schlicht "," hoch "),
Server ("Yahoo.com ", 80," schlicht "," hoch "),
]
Für Server in Servern:
Server.Verbindung prüfen()
drucken (len (Server.Geschichte))
Druck Server.Geschichte [-1])
Essiggurke.Dump (Server, offen ("Server.Gurke "," wb "))

Die folgende Ausgabe wird beim Ausführen dieser Datei angezeigt.

Datei zum Hinzufügen von Informationen erstellen

Erstellen Sie eine neue Datei mit dem Namen hinzufügen.py Und importieren Gurkenpaket und Klassenserver aus der alten Datei Server.py. Diese Datei öffnet die Gurkendatei und fordert Sie auf, einige zusätzliche Informationen zum Server hinzuzufügen, da der Code unten angezeigt wird.

Gurke importieren
vom Server -Import -Server
Server = Gurke.Laden (Open ("Server.Gurke "," rb "))
print ("Beispiel zum Hinzufügen von Server")
ServerName = input ("Servername eingeben:")
port = int (input ("Eingibt eine Portnummer als Ganzzahl:"))
Connection = input ("Geben Sie einen Typ Ping/Plain/SSL ein:")
Priorität = Eingabe ("Priorität hoch/niedrig eingeben:")
New_Server = Server (ServerName, Port, Verbindung, Priorität)
Server.append (new_server)
Essiggurke.Dump (Server, offen ("Server.Gurke "," wb "))

Wenn Sie diese Datei ausführen, erhalten Sie die folgende Ausgabe und werden aufgefordert, den Servernamen, den Port, den Ping -Typ und die Priorität hinzuzufügen.

Während Sie den Server ausführen.PY -Datei erneut erhalten Sie die Informationen zum alten Server sowie den Verlauf des neuen Servers, den Sie im obigen Bild angegeben haben.

Datei für Google Mail -Benachrichtigungen erstellen

Erstellen Sie nun eine neue Datei mit dem Namen Google Mail.py und importieren einige erforderliche Pakete. Erstellen Sie dann eine Methode mit dem Namen Email Alarm() das schafft eine Alarm auf die ansenden Email Während der Bereitstellung von E -Mails und Passwort Information.

SMTPLIB importieren
aus der Email.Nachrichten importieren E -Mail -Message
Def E -Mail_Alert (Betreff, Körper, bis):
msg = EmailMessage ()
Nachricht.set_content (Körper)
gmail_user = '[email protected] '
gmail_password = 'get_app_password'
MSG ['Subjekt'] = Subjekt
msg ['from'] = "[email protected] "
msg ['to'] = to
S = SMTPLIB.SMTP ('SMTP.Google Mail.com ', 587)
S.Ehlo ()
S.Starttls ()
S.Login (gmail_user, gmail_password)
S.send_message (msg)
S.aufhören()
Wenn __name__ == '__main__':
EMAIL_ALERT ("Test", "https: // diskord.gg/caww5qq "," [email protected] ")

Jetzt geh zum Server.PY -Datei und importieren Email Alarm() Methode aus dem Google Mail.PY -Datei.

von Google Mail Import Email_Alert

Sie können Ihre hinzufügen E-Mail-Addresse wo immer im Code erforderlich ist. Jetzt laufen Server.py Datei und Überprüfen Sie die Ausgabe, die im Terminal des Python -Interpreter angezeigt wird.

Erstellen Sie eine Datei, um Statistiken zu erhalten

Jetzt musst du erstellen Eine andere Python -Datei mit dem Namen get_stats.py innerhalb desselben Verzeichnisses. Diese Datei hat die importiert Serverklasse von dem Server.py Datei. Der unten geschriebene Code wird in unserer Gurkendatei untersucht, die geladen wird, und drucken die Geschichte von jedem Server und wie viel dieser bestimmte Server hat Betriebszeit.

Gurke importieren
vom Server -Import -Server
Server = Gurke.Laden (Open ("Server.Gurke "," rb "))
Für Server in Servern:
server_up = 0
Für Punkt im Server.Geschichte:
Wenn Punkt [1]:
server_up += 1
print (f "---------- \ n Server.Name war auf server_up / len (Server.Geschichte) * 100 \ ntotal History: len (Server.Geschichte) \ n ---------- \ n ")

Wenn Sie diese bestimmte Datei ausführen, sehen Sie auch einen Gesamtverlauf jedes Servers und deren Betriebszeit.

Abschluss

Wir haben das Skript zur Überwachung von Python Server in unserem Visual Studio -Code -Interpreter erfolgreich ausprobiert und gelernt, um Informationen zu mehreren Servern zu erhalten.