|
| 1 | +import psutil |
| 2 | +import socket |
| 3 | +import mysql.connector |
| 4 | +import time |
| 5 | +from config import * |
| 6 | + |
| 7 | +# Datenbank-Objekt anlegen |
| 8 | +try: |
| 9 | + mydb = mysql.connector.connect( |
| 10 | + host=DBHOST, |
| 11 | + port = DBPORT, |
| 12 | + user=DBUSER, |
| 13 | + password=DBPWD, |
| 14 | + database=DB |
| 15 | + ) |
| 16 | +except: |
| 17 | + print("Datenbankverbindung nicht erfolgreich") |
| 18 | + exit() |
| 19 | + |
| 20 | +mycursor = mydb.cursor() |
| 21 | + |
| 22 | +# Computername in Date schreiben |
| 23 | +host = socket.gethostname() |
| 24 | + |
| 25 | +# Zu überwachende Prozesse aus Datei einkesen |
| 26 | +fobj = open("prozessliste.txt", "r") |
| 27 | +prozessListeCheck = [procMon.strip() for procMon in fobj] |
| 28 | +fobj.close() |
| 29 | + |
| 30 | +# Liste der laufenden Prozesse erzeugen |
| 31 | +prozessliste = [prozess for prozess in psutil.process_iter(['pid','name','username'])] |
| 32 | + |
| 33 | +# Schleife über die zu monitorenden Prozesse |
| 34 | +for monProc in prozessListeCheck: |
| 35 | + # Überwachungsvariable ob Prozess läuft wird zunächst auf False gesetzt |
| 36 | + laeuft=False |
| 37 | + #Schleife über laufende Prozesse |
| 38 | + for proc in prozessliste: |
| 39 | + # Vergleich ob der Prozess in einem der Prozesse aufgeführt ist |
| 40 | + # um Fehler durch Rechtschreibugn auszuschließen werden beide String in Kleinbuchstaben umgewandelt |
| 41 | + if monProc.lower() in str(proc.name()).lower(): |
| 42 | + # Wenn der Prozess in der Prozessliste vorhanden ist wird ein Datensatz in die DB geschrieben |
| 43 | + |
| 44 | + # Wenn Prozess unter anderem Benutzernamen läuft, wird eine Exception geworfen. |
| 45 | + # Damit das Skript dennoch weiterläuft, wird ein Dummy Username geschrieben |
| 46 | + try: |
| 47 | + uname = proc.username() |
| 48 | + except: |
| 49 | + uname = "_Zugriff verweigert_" |
| 50 | + pname = proc.name() |
| 51 | + print(pname, " is running") |
| 52 | + # SQL Statement um in Datenbank zu schreiben |
| 53 | + sql = "INSERT INTO "+TABLE+" (time, host, username, proc, cputime) VALUES (%s, %s, %s, %s, %s)" |
| 54 | + val = (time.time(), |
| 55 | + host, |
| 56 | + uname, |
| 57 | + pname, |
| 58 | + proc.cpu_times().user |
| 59 | + ) |
| 60 | + mycursor.execute(sql, val) |
| 61 | + mydb.commit() |
| 62 | + |
| 63 | + |
0 commit comments