import datetime import requests import re import socket def get_local_ip(): try: # Ein temporärer Socket erstellen, um die lokale IP-Adresse zu ermitteln s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Verbindung zu einem öffentlichen DNS-Server herstellen s.connect(("8.8.8.8", 80)) # Die lokale IP-Adresse aus dem Socket abrufen local_ip = s.getsockname()[0] s.close() return local_ip except Exception as e: print(f"Fehler beim Ermitteln der lokalen IP-Adresse: {e}") return None # URL des API-Servers sogo_server = "http://172.19.1.4/api/v1/get/logs/sogo/1000" sogo_headers = {"x-api-key":"6A039F-CED4C3-D69E9E-A6C713-7EBB6A"} api_server = "http://api.stines.de:8001/report" api_headers = {"access_token":"^YWUbG7yX*V!tV^KBSd*2c&vdN3wV9a2i7f3hfGFMBYFxi6#mMiJGiaA5KEHE%B*miK%qb7rQ67gmcYP@gqmux8"} def extract_email_username(log_entry): # Regex für das Finden der E-Mail-Adresse in der Log-Zeile match = re.search(r"for user '([^']+)'", log_entry) if match: email = match.group(1) # Entfernen des '@' Zeichens aus der E-Mail-Adresse username = email.split('@')[0] return username else: return None # Funktion zum Abrufen von Daten vom API-Server def fetch_data_from_api(url): response = requests.get(url,headers=sogo_headers) if response.status_code == 200: return response.json() else: print(f"Fehler beim Abrufen der Daten: {response.status_code}") return None # Abrufen der Daten data = fetch_data_from_api(sogo_server) if data: for entry in data: log_line = entry.get('message') if log_line and "successful login" in log_line: username = extract_email_username(log_line) if username: payload ={ "ipaddress": "172.19.1.4", "username": username, "lastaccess": datetime.datetime.fromtimestamp(int(entry.get('time'))).strftime('%Y-%m-%d %H:%M:%S') } api_response = requests.post(api_server, json=payload, headers=api_headers) print(api_response.status_code) print(f"Extrahierter Benutzername: {payload}") else: print("Keine Daten gefunden.")