Skip to content

Commit aa7e13b

Browse files
author
Martin Hohmann
committed
Initial Release
0 parents  commit aa7e13b

File tree

5 files changed

+92
-0
lines changed

5 files changed

+92
-0
lines changed

README.MD

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
In config.py sind die Datenbank-Zugriffsdaten anzugeben.
2+
3+
In prozessliste.txt werden je Zeile ein Suchstring angegeben. Groß- und Kleinschreibung werden ignoriert.

config.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
DBHOST = "ocs"
2+
DBPORT="3307"
3+
DBUSER = "autodesk"
4+
DBPWD = "*******"
5+
DB = "test"
6+
TABLE = "autodesklog"

main.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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+

prozessliste.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
EXCEL.EXE
2+
ted.exe
3+
chrome

setup.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import sys
2+
from cx_Freeze import setup, Executable
3+
4+
build_exe_options = {'packages': ["psutil","socket","mysql.connector","time"],
5+
'excludes': ["tkinter"]
6+
}
7+
8+
base = None
9+
if sys.platform == "win32":
10+
base = "Win32GUI"
11+
12+
setup(name = "ProcessMonitor",
13+
version = "0.2",
14+
description = "Logt ausgewählte Prozesse in MySQL-DB",
15+
options = {"build.exe": build_exe_options},
16+
executables = [Executable("main.py", base = base)]
17+
)

0 commit comments

Comments
 (0)