# -*- coding: iso-8859-1 -*-
"""
Written by ftx with a Codesnippet from gerold
"""
#Benötigte Module werden importiert
import sys
import os
import re
import smtplib
import funktionen
#Funktionsrückgabewerte werden in Variablen gespeichert
email = funktionen.email_config()
optional = funktionen.optional_config()
eintraege = funktionen.get_current_processes().items()
config = funktionen.prozess_config()
#Initialisierung eines Dictionarys für die Überprüfung, ob die Prozesse laufen,
#welche in der Config stehen.
dic={}
#Einfügen der Prozesse, die in der Config stehen, in ein Dictionary welches allen
#automatisch den Value 0 gibt
for k, v in config.iteritems():
if not (dic.has_key(k)):
dic[k] = 0 # neuen Eintrag hinzufügen
#For-Schleifen zum Testen, ob es Übereinstimmungen gibt zwischen den laufenden Prozessen
#und den in der CFG-Datei eingetragenen. Wenn übereinstimmung, wird der Value auf 1 gesetzt
for eintrag in eintraege:
for key in dic.keys():
for value in dic.values():
if(str(eintrag[1]["name"]) == str(key)):
dic[key] = 1
#Das Email Dictionary wird durchgegangen, wenn bestimmte Strings matchen, wird es
#in Variablen geschrieben
for k, v in email.iteritems():
if(k == "Empfaenger"):
empfaenger = v
if(k == "SMTPServer"):
smtpserver = v
if(k == "Absender"):
absender = v
#Das Optional Dictionary wird durchgegagen, wenn bestimmte Strings matchen, wird es
#in Variablen geschrieben
for k, v in optional.iteritems():
if(k == "Loginname"):
loginname = v
if(k == "Passwort"):
passwort = v
#Mail Server Verbindung wird aufgebaut, sollte loginname&passwort in der CFG-Datei
#eingetragen worden sein, so läuft die Schleife normal durch, wenn nicht wird so
#versucht zum SMTP-Server zu connecten
server = smtplib.SMTP(smtpserver)
try:
server.login(loginname,passwort)
except:
smtplib.SMTPAuthenticationError
else:
ausfall = "Folgende/r Dienst/e sind/ist ausgefallen:"
allesklar = "Alle Dienste laufen, super!"
zwisch = 0 # Variablen initialisierung
err = False # Variablen initialisierung
format = 0 # Variablen initialisierung
for k, v in dic.iteritems(): # Wenn es Prozesse gibt, die ausgefallen sind, wird err = True gesetzt
if(v == 0):
if(format == 0):
ausfall = ausfall + " " + k
err = True
format = 1
else:
ausfall = ausfall + " " + k + ","
ausfall = ausfall.strip(",")
#Wenn err True ist, wird ein ausfall beklagt, wenn alle Dienste laufen, wird die Var "allesklar" versendet
if (err == True):
server.sendmail(absender,empfaenger,ausfall)
else:
server.sendmail(absender,empfaenger,allesklar)
server.quit() # Server Connection Close