Change ssh-tunnel
parent
a0ed0145ff
commit
7647468c40
|
|
@ -1,8 +1,9 @@
|
||||||
import mysql.connector.locales.eng
|
import mysql.connector.locales.eng
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
from sshtunnel import SSHTunnelForwarder
|
|
||||||
import os
|
import os
|
||||||
|
import Controller.ssh_tunnel as ssh_tunnel
|
||||||
|
|
||||||
|
filename = os.path.basename(__file__)
|
||||||
def ping(host):
|
def ping(host):
|
||||||
# Führe den Ping-Befehl aus und erfasse die Ausgabe
|
# Führe den Ping-Befehl aus und erfasse die Ausgabe
|
||||||
result = os.system("ping -c 1 " + host)
|
result = os.system("ping -c 1 " + host)
|
||||||
|
|
@ -12,25 +13,22 @@ def ping(host):
|
||||||
hostname = "forward.stines.de", 2223
|
hostname = "forward.stines.de", 2223
|
||||||
return hostname
|
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):
|
def database(query,name,user):
|
||||||
server.start()
|
# server.start()
|
||||||
print(f"SSH Server start Port:{server.local_bind_port}")
|
print(f"{filename}-SSH Server start Port:{ssh_tunnel.server_port()}")
|
||||||
|
|
||||||
mydb = mysql.connector.connect(
|
mydb = mysql.connector.connect(
|
||||||
host="127.0.0.1",
|
host="127.0.0.1",
|
||||||
port=server.local_bind_port,
|
port=ssh_tunnel.server_port(),
|
||||||
user="root",
|
user="root",
|
||||||
password="N53yBCswuawzBzS445VNAhWVMs3N59Gb9szEsrzXRBzarDqpdETpQeyt5v5CGe",
|
password="N53yBCswuawzBzS445VNAhWVMs3N59Gb9szEsrzXRBzarDqpdETpQeyt5v5CGe",
|
||||||
database="" + name,
|
database="" + name,
|
||||||
auth_plugin='mysql_native_password',
|
auth_plugin='mysql_native_password',
|
||||||
)
|
)
|
||||||
mydb.connect()
|
mydb.connect()
|
||||||
print("SQL Server Connect")
|
print(f"{filename}-SQL Server Connect")
|
||||||
|
print(f"{filename}-{query}")
|
||||||
cursor = mydb.cursor()
|
cursor = mydb.cursor()
|
||||||
if "SELECT" in query:
|
if "SELECT" in query:
|
||||||
if user:
|
if user:
|
||||||
|
|
@ -38,10 +36,10 @@ def database(query,name,user):
|
||||||
return cursor.fetchone()
|
return cursor.fetchone()
|
||||||
else:
|
else:
|
||||||
cursor.execute(query, user)
|
cursor.execute(query, user)
|
||||||
print("Inside SELECT ALL")
|
print(f"{filename}- Inside SELECT ALL")
|
||||||
return cursor.fetchall()
|
return cursor.fetchall()
|
||||||
if "SHOW" in query:
|
if "SHOW" in query:
|
||||||
cursor.execute(query )
|
cursor.execute(query)
|
||||||
return cursor.fetchall()
|
return cursor.fetchall()
|
||||||
if "INSERT" in query:
|
if "INSERT" in query:
|
||||||
cursor.execute(query)
|
cursor.execute(query)
|
||||||
|
|
@ -50,9 +48,9 @@ def database(query,name,user):
|
||||||
cursor.execute(query)
|
cursor.execute(query)
|
||||||
mydb.commit()
|
mydb.commit()
|
||||||
mydb.close()
|
mydb.close()
|
||||||
server.stop()
|
# server.stop()
|
||||||
def get_ip(query):
|
def get_ip(query):
|
||||||
print("GetIP")
|
print(f"{filename}-GetIP")
|
||||||
user = ""
|
user = ""
|
||||||
name = ""
|
name = ""
|
||||||
return database(query, name, user)
|
return database(query, name, user)
|
||||||
|
|
@ -60,21 +58,19 @@ def get_database():
|
||||||
name = ""
|
name = ""
|
||||||
user = ""
|
user = ""
|
||||||
query = 'SHOW DATABASES'
|
query = 'SHOW DATABASES'
|
||||||
print(database(query,name,user))
|
|
||||||
return database(query,name,user)
|
return database(query,name,user)
|
||||||
def create_database(query,name):
|
def create_database(query,name):
|
||||||
try:
|
try:
|
||||||
user = ""
|
user = ""
|
||||||
database(query,name,user)
|
database(query,name,user)
|
||||||
return ("Database Created")
|
|
||||||
except Exception as e:
|
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):
|
def add_user(query,name,user):
|
||||||
try:
|
try:
|
||||||
database(query, name, user)
|
database(query, name, user)
|
||||||
return ("User Added")
|
return print(f"{filename}-User Added")
|
||||||
except Exception as e:
|
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):
|
def get_user(query,name,user):
|
||||||
return database(query,name,user)
|
return database(query,name,user)
|
||||||
|
|
@ -82,5 +78,5 @@ def get_user(query,name,user):
|
||||||
def get_cpu(query,name,cpu):
|
def get_cpu(query,name,cpu):
|
||||||
return database(query,name,cpu)
|
return database(query,name,cpu)
|
||||||
|
|
||||||
def update_cpu(query,name,cpu):
|
def update_cpu(query,name):
|
||||||
return database(query,name,cpu)
|
database(query,name)
|
||||||
|
|
@ -1,14 +1,16 @@
|
||||||
import subprocess
|
import subprocess
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from Controller import mysql_connect
|
from Controller import mysql_connect
|
||||||
|
import os
|
||||||
|
filename = os.path.basename(__file__)
|
||||||
def rds (ip,name):
|
def rds (ip,name):
|
||||||
|
print(f"INSIDE-{filename}")
|
||||||
powershell_command = "quser | Select-String -Pattern 'Aktiv'"
|
powershell_command = "quser | Select-String -Pattern 'Aktiv'"
|
||||||
result = subprocess.run(["powershell", "-Command", powershell_command], capture_output=True, text=True)
|
result = subprocess.run(["powershell", "-Command", powershell_command], capture_output=True, text=True)
|
||||||
fieldname = ["Benutzername","Anmeldezeit","Anmeldedatum"]
|
fieldname = ["Benutzername","Anmeldezeit","Anmeldedatum"]
|
||||||
# Die Ausgabe des Befehls aufteilen und die Benutzernamen und Anmeldezeiten extrahieren
|
# Die Ausgabe des Befehls aufteilen und die Benutzernamen und Anmeldezeiten extrahieren
|
||||||
output_lines = result.stdout.strip().split('\n')[1:]
|
output_lines = result.stdout.strip().split('\n')[1:]
|
||||||
|
print(f"{filename}-{output_lines}")
|
||||||
logged_in_users = []
|
logged_in_users = []
|
||||||
|
|
||||||
# Tabelle erstellen, falls sie noch nicht existiert
|
# Tabelle erstellen, falls sie noch nicht existiert
|
||||||
|
|
@ -20,6 +22,7 @@ def rds (ip,name):
|
||||||
create_table_query += " ROW_FORMAT=DYNAMIC"
|
create_table_query += " ROW_FORMAT=DYNAMIC"
|
||||||
user = ""
|
user = ""
|
||||||
mysql_connect.create_database(create_table_query, name)
|
mysql_connect.create_database(create_table_query, name)
|
||||||
|
print(f"{filename}-{create_table_query}")
|
||||||
|
|
||||||
for line in output_lines:
|
for line in output_lines:
|
||||||
parts = line.split()
|
parts = line.split()
|
||||||
|
|
@ -27,6 +30,7 @@ def rds (ip,name):
|
||||||
login_time = parts[5]
|
login_time = parts[5]
|
||||||
login_date = parts[6]
|
login_date = parts[6]
|
||||||
logged_in_users.append((username,login_date, login_time))
|
logged_in_users.append((username,login_date, login_time))
|
||||||
|
print(f"{filename}-{logged_in_users}")
|
||||||
|
|
||||||
for user in logged_in_users:
|
for user in logged_in_users:
|
||||||
user = [cell if cell.strip() else "-" for cell in user]
|
user = [cell if cell.strip() else "-" for cell in user]
|
||||||
|
|
@ -34,3 +38,4 @@ def rds (ip,name):
|
||||||
user = [unix_time] + user
|
user = [unix_time] + user
|
||||||
insert_query = f"INSERT INTO `{table_name}` (importdate, `{'`, `'.join(fieldname)}`) VALUES (%s, {', '.join(['%s'] * len(fieldname))})"
|
insert_query = f"INSERT INTO `{table_name}` (importdate, `{'`, `'.join(fieldname)}`) VALUES (%s, {', '.join(['%s'] * len(fieldname))})"
|
||||||
mysql_connect.add_user(insert_query, name, user)
|
mysql_connect.add_user(insert_query, name, user)
|
||||||
|
print(f"{filename}-{insert_query}")
|
||||||
|
|
@ -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
|
||||||
|
|
@ -27,6 +27,6 @@ def get_hdd_info():
|
||||||
return math.ceil(total_disk_size)
|
return math.ceil(total_disk_size)
|
||||||
|
|
||||||
# Informationen über die CPU
|
# 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}'"
|
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])
|
return mysql_connect.update_cpu(query,"Stines-GmbH","")
|
||||||
Binary file not shown.
38
main.py
38
main.py
|
|
@ -1,9 +1,15 @@
|
||||||
|
import Controller.ssh_tunnel as ssh_tunnel
|
||||||
|
ssh_tunnel.server_start()
|
||||||
import socket
|
import socket
|
||||||
from Controller import adcontroller_export, exchange_export, rds_export, smtp_export, zammad, system_info
|
from Controller import adcontroller_export, exchange_export, rds_export, smtp_export, zammad, system_info
|
||||||
import Controller.mysql_connect as mysql_connect
|
import Controller.mysql_connect as mysql_connect
|
||||||
import random
|
import random
|
||||||
import subprocess
|
import subprocess
|
||||||
import socket
|
import socket
|
||||||
|
import os
|
||||||
|
|
||||||
|
## Gibt Name der Datei zum Debugen aus
|
||||||
|
filename = os.path.basename(__file__)
|
||||||
|
|
||||||
def get_local_ip():
|
def get_local_ip():
|
||||||
try:
|
try:
|
||||||
|
|
@ -17,8 +23,6 @@ def get_local_ip():
|
||||||
print(f"Fehler beim Abrufen der lokalen IP-Adresse: {e}")
|
print(f"Fehler beim Abrufen der lokalen IP-Adresse: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def system_info_get(ip,name):
|
|
||||||
system_info.set_system_info(name,ip)
|
|
||||||
|
|
||||||
def adcontroller(ip,name):
|
def adcontroller(ip,name):
|
||||||
adcontroller_export.adcontroller(ip, name)
|
adcontroller_export.adcontroller(ip, name)
|
||||||
|
|
@ -75,26 +79,27 @@ def create_windows_task(task_name, command, schedule):
|
||||||
try:
|
try:
|
||||||
command_line = f'schtasks /F /create /ru "SYSTEM" /tn "{task_name}" /tr "{command}" /sc {schedule}'
|
command_line = f'schtasks /F /create /ru "SYSTEM" /tn "{task_name}" /tr "{command}" /sc {schedule}'
|
||||||
subprocess.run(command_line, shell=True, check=True)
|
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:
|
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(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(f"{filename}-Before Get List")
|
||||||
print(mysql_connect.get_ip(query))
|
|
||||||
list = mysql_connect.get_ip(query)
|
list = mysql_connect.get_ip(query)
|
||||||
print("Atfer Get IP")
|
print(f"{filename}-Atfer Get IP")
|
||||||
|
|
||||||
if list == []:
|
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()}')"
|
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","")
|
mysql_connect.add_user(query_insert,"Stines-GmbH","")
|
||||||
|
|
||||||
set_ipaddress = []
|
set_ipaddress = []
|
||||||
print("Before Row")
|
print(f"{filename}-Before Row")
|
||||||
# Ergebnisse durchlaufen und ausgeben
|
# Ergebnisse durchlaufen und ausgeben
|
||||||
for row in list:
|
for row in list:
|
||||||
name = row[2]
|
name = row[2]
|
||||||
|
|
@ -103,7 +108,7 @@ for row in list:
|
||||||
lastchange = row[6]
|
lastchange = row[6]
|
||||||
funktion = row[7]
|
funktion = row[7]
|
||||||
token = row[8]
|
token = row[8]
|
||||||
print(name)
|
print(f"{filename}-Inside Row {name}-{funktion}")
|
||||||
|
|
||||||
cursor = mysql_connect.get_database()
|
cursor = mysql_connect.get_database()
|
||||||
|
|
||||||
|
|
@ -117,12 +122,13 @@ for row in list:
|
||||||
database_exists = True
|
database_exists = True
|
||||||
|
|
||||||
# Datenbank erstellen, wenn sie noch nicht existiert
|
# Datenbank erstellen, wenn sie noch nicht existiert
|
||||||
|
print(f"{filename}-{database_exists}")
|
||||||
if not database_exists:
|
if not database_exists:
|
||||||
create_database_query = f"CREATE DATABASE `{name}`"
|
create_database_query = f"CREATE DATABASE `{name}`"
|
||||||
mysql_connect.create_database(create_database_query,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:
|
else:
|
||||||
print(f"Die Datenbank '`{name}`' existiert bereits.")
|
print(f"{filename}-Die Datenbank '`{name}`' existiert bereits.")
|
||||||
|
|
||||||
if token is not None:
|
if token is not None:
|
||||||
eval(funktion + '("' + ipadress + '","' + name + '","' + token + '")')
|
eval(funktion + '("' + ipadress + '","' + name + '","' + token + '")')
|
||||||
|
|
@ -132,11 +138,13 @@ for row in list:
|
||||||
else:
|
else:
|
||||||
eval(funktion + '("' + ipadress + '","' + name + '")')
|
eval(funktion + '("' + ipadress + '","' + name + '")')
|
||||||
|
|
||||||
print(set_ipaddress)
|
print(f"{filename}-FOR system_info_get: {set_ipaddress}")
|
||||||
system_info_get(f"{set_ipaddress}","Stines-GmbH")
|
system_info.set_system_info(f"{set_ipaddress}")
|
||||||
|
|
||||||
task_name = "Reports"
|
task_name = "Reports"
|
||||||
command_to_execute = "C:\\Scripte\\Start.exe"
|
command_to_execute = "C:\\Scripte\\Start.exe"
|
||||||
schedule = f"daily /st 23:{random.randint(0, 59)}" # You can customize the schedule here
|
schedule = f"daily /st 23:{random.randint(0, 59)}" # You can customize the schedule here
|
||||||
|
|
||||||
create_windows_task(task_name, command_to_execute, schedule)
|
create_windows_task(task_name, command_to_execute, schedule)
|
||||||
|
|
||||||
|
ssh_tunnel.server_stop()
|
||||||
Loading…
Reference in New Issue