diff --git a/Controller/mysql_connect.py b/Controller/mysql_connect.py index 35c3196..21840ff 100644 --- a/Controller/mysql_connect.py +++ b/Controller/mysql_connect.py @@ -1,8 +1,9 @@ import mysql.connector.locales.eng import mysql.connector -from sshtunnel import SSHTunnelForwarder import os +import Controller.ssh_tunnel as ssh_tunnel +filename = os.path.basename(__file__) def ping(host): # Führe den Ping-Befehl aus und erfasse die Ausgabe result = os.system("ping -c 1 " + host) @@ -12,25 +13,22 @@ def ping(host): hostname = "forward.stines.de", 2223 return hostname -server = SSHTunnelForwarder( - ("forward.stines.de", 2223), - ssh_username="root", - ssh_password="adm.3dfx12", - remote_bind_address=('127.0.0.1', 3306) -) + def database(query,name,user): - server.start() - print(f"SSH Server start Port:{server.local_bind_port}") + # server.start() + print(f"{filename}-SSH Server start Port:{ssh_tunnel.server_port()}") + mydb = mysql.connector.connect( host="127.0.0.1", - port=server.local_bind_port, + port=ssh_tunnel.server_port(), user="root", password="N53yBCswuawzBzS445VNAhWVMs3N59Gb9szEsrzXRBzarDqpdETpQeyt5v5CGe", database="" + name, auth_plugin='mysql_native_password', ) mydb.connect() - print("SQL Server Connect") + print(f"{filename}-SQL Server Connect") + print(f"{filename}-{query}") cursor = mydb.cursor() if "SELECT" in query: if user: @@ -38,10 +36,10 @@ def database(query,name,user): return cursor.fetchone() else: cursor.execute(query, user) - print("Inside SELECT ALL") + print(f"{filename}- Inside SELECT ALL") return cursor.fetchall() if "SHOW" in query: - cursor.execute(query ) + cursor.execute(query) return cursor.fetchall() if "INSERT" in query: cursor.execute(query) @@ -50,9 +48,9 @@ def database(query,name,user): cursor.execute(query) mydb.commit() mydb.close() - server.stop() + # server.stop() def get_ip(query): - print("GetIP") + print(f"{filename}-GetIP") user = "" name = "" return database(query, name, user) @@ -60,21 +58,19 @@ def get_database(): name = "" user = "" query = 'SHOW DATABASES' - print(database(query,name,user)) return database(query,name,user) def create_database(query,name): try: user = "" database(query,name,user) - return ("Database Created") except Exception as e: - print("Ein Fehler ist aufgetreten:", str(e)) + print(f"{filename}-Ein Fehler ist aufgetreten:", str(e)) def add_user(query,name,user): try: database(query, name, user) - return ("User Added") + return print(f"{filename}-User Added") except Exception as e: - print("Ein Fehler ist aufgetreten:", str(e)) + print(f"{filename}-Ein Fehler ist aufgetreten:", str(e)) def get_user(query,name,user): return database(query,name,user) @@ -82,5 +78,5 @@ def get_user(query,name,user): def get_cpu(query,name,cpu): return database(query,name,cpu) -def update_cpu(query,name,cpu): - return database(query,name,cpu) \ No newline at end of file +def update_cpu(query,name): + database(query,name) \ No newline at end of file diff --git a/Controller/rds_export.py b/Controller/rds_export.py index 6a024cd..fa26603 100644 --- a/Controller/rds_export.py +++ b/Controller/rds_export.py @@ -1,14 +1,16 @@ import subprocess from datetime import datetime from Controller import mysql_connect - - +import os +filename = os.path.basename(__file__) def rds (ip,name): + print(f"INSIDE-{filename}") powershell_command = "quser | Select-String -Pattern 'Aktiv'" result = subprocess.run(["powershell", "-Command", powershell_command], capture_output=True, text=True) fieldname = ["Benutzername","Anmeldezeit","Anmeldedatum"] # Die Ausgabe des Befehls aufteilen und die Benutzernamen und Anmeldezeiten extrahieren output_lines = result.stdout.strip().split('\n')[1:] + print(f"{filename}-{output_lines}") logged_in_users = [] # Tabelle erstellen, falls sie noch nicht existiert @@ -20,6 +22,7 @@ def rds (ip,name): create_table_query += " ROW_FORMAT=DYNAMIC" user = "" mysql_connect.create_database(create_table_query, name) + print(f"{filename}-{create_table_query}") for line in output_lines: parts = line.split() @@ -27,10 +30,12 @@ def rds (ip,name): login_time = parts[5] login_date = parts[6] logged_in_users.append((username,login_date, login_time)) + print(f"{filename}-{logged_in_users}") for user in logged_in_users: user = [cell if cell.strip() else "-" for cell in user] unix_time = int(datetime.now().timestamp()) user = [unix_time] + user insert_query = f"INSERT INTO `{table_name}` (importdate, `{'`, `'.join(fieldname)}`) VALUES (%s, {', '.join(['%s'] * len(fieldname))})" - mysql_connect.add_user(insert_query, name, user) \ No newline at end of file + mysql_connect.add_user(insert_query, name, user) + print(f"{filename}-{insert_query}") \ No newline at end of file diff --git a/Controller/ssh_tunnel.py b/Controller/ssh_tunnel.py new file mode 100644 index 0000000..5aa24e4 --- /dev/null +++ b/Controller/ssh_tunnel.py @@ -0,0 +1,22 @@ +from sshtunnel import SSHTunnelForwarder +import os + +filename = os.path.basename(__file__) + +server = SSHTunnelForwarder( + ("forward.stines.de", 2223), + ssh_username="root", + ssh_password="adm.3dfx12", + remote_bind_address=('127.0.0.1', 3306) +) + +def server_start(): + server.start() + return print(f"{filename}-Server started") + +def server_stop(): + server.stop() + return print(f"{filename}-Server stoped") + +def server_port(): + return server.local_bind_port diff --git a/Controller/system_info.py b/Controller/system_info.py index 7b151c9..c5a2ed4 100644 --- a/Controller/system_info.py +++ b/Controller/system_info.py @@ -27,6 +27,6 @@ def get_hdd_info(): return math.ceil(total_disk_size) # Informationen über die CPU -def set_system_info(name,ipadress): +def set_system_info(ipadress): query = f"UPDATE `Kunden-Server` SET RAM={get_ram_info()}, Prozessor={get_cpu_sql()[0]}, CPU='{get_cpu_info()}' WHERE `IP-Adresse`='{ipadress}'" - return mysql_connect.update_cpu(query,"Stines-GmbH",get_cpu_sql()[0]) \ No newline at end of file + return mysql_connect.update_cpu(query,"Stines-GmbH","") \ No newline at end of file diff --git a/dist/main.exe b/dist/main.exe index 7c998fa..a1661a8 100644 Binary files a/dist/main.exe and b/dist/main.exe differ diff --git a/main.py b/main.py index 05ed5b3..2604c0c 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,15 @@ +import Controller.ssh_tunnel as ssh_tunnel +ssh_tunnel.server_start() import socket from Controller import adcontroller_export, exchange_export, rds_export, smtp_export, zammad, system_info import Controller.mysql_connect as mysql_connect import random import subprocess import socket +import os + +## Gibt Name der Datei zum Debugen aus +filename = os.path.basename(__file__) def get_local_ip(): try: @@ -17,8 +23,6 @@ def get_local_ip(): print(f"Fehler beim Abrufen der lokalen IP-Adresse: {e}") return None -def system_info_get(ip,name): - system_info.set_system_info(name,ip) def adcontroller(ip,name): adcontroller_export.adcontroller(ip, name) @@ -75,26 +79,27 @@ def create_windows_task(task_name, command, schedule): try: command_line = f'schtasks /F /create /ru "SYSTEM" /tn "{task_name}" /tr "{command}" /sc {schedule}' subprocess.run(command_line, shell=True, check=True) - print(f"Windows task '{task_name}' created successfully.") + print(f"{filename}-Windows task '{task_name}' created successfully.") except subprocess.CalledProcessError as e: - print(f"Failed to create Windows task. Error: {e}") + print(f"{filename}-Failed to create Windows task. Error: {e}") + + # query = "SELECT * FROM `Stines-GmbH`.`Kunden-Server` WHERE `IP-Adresse` = ""'{}'""".format(get_local_ip()) -query = "SELECT * FROM `Stines-GmbH`.`Kunden-Server` WHERE `IP-Adresse` = ""'{}'""".format("172.19.1.6") +query = "SELECT * FROM `Stines-GmbH`.`Kunden-Server` WHERE `IP-Adresse` = ""'{}'""".format("172.19.1.5") -print("Before Get List") -print(mysql_connect.get_ip(query)) +print(f"{filename}-Before Get List") list = mysql_connect.get_ip(query) -print("Atfer Get IP") +print(f"{filename}-Atfer Get IP") if list == []: query_insert = f"INSERT INTO `Kunden-Server` (Name,`Server-Name`,`IP-Adresse`,Funktion,CPU,RAM,Speicher) VALUES ('unkown','{socket.gethostname()}','{get_local_ip()}','-','{system_info.get_cpu_info()}','{system_info.get_ram_info()}','{system_info.get_hdd_info()}')" - print("List is Empty") + print(f"{filename}-List is Empty") mysql_connect.add_user(query_insert,"Stines-GmbH","") set_ipaddress = [] -print("Before Row") +print(f"{filename}-Before Row") # Ergebnisse durchlaufen und ausgeben for row in list: name = row[2] @@ -103,7 +108,7 @@ for row in list: lastchange = row[6] funktion = row[7] token = row[8] - print(name) + print(f"{filename}-Inside Row {name}-{funktion}") cursor = mysql_connect.get_database() @@ -117,12 +122,13 @@ for row in list: database_exists = True # Datenbank erstellen, wenn sie noch nicht existiert + print(f"{filename}-{database_exists}") if not database_exists: create_database_query = f"CREATE DATABASE `{name}`" mysql_connect.create_database(create_database_query,name) - print(f"Die Datenbank '`{name}`' wurde erfolgreich erstellt.") + print(f"{filename}-Die Datenbank '`{name}`' wurde erfolgreich erstellt.") else: - print(f"Die Datenbank '`{name}`' existiert bereits.") + print(f"{filename}-Die Datenbank '`{name}`' existiert bereits.") if token is not None: eval(funktion + '("' + ipadress + '","' + name + '","' + token + '")') @@ -132,11 +138,13 @@ for row in list: else: eval(funktion + '("' + ipadress + '","' + name + '")') -print(set_ipaddress) -system_info_get(f"{set_ipaddress}","Stines-GmbH") +print(f"{filename}-FOR system_info_get: {set_ipaddress}") +system_info.set_system_info(f"{set_ipaddress}") task_name = "Reports" command_to_execute = "C:\\Scripte\\Start.exe" schedule = f"daily /st 23:{random.randint(0, 59)}" # You can customize the schedule here -create_windows_task(task_name, command_to_execute, schedule) \ No newline at end of file +create_windows_task(task_name, command_to_execute, schedule) + +ssh_tunnel.server_stop() \ No newline at end of file