HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/af/scripts/test_connections.py
#!/usr/bin/env python
"""
Führt Verbindungstests für MySQL und SFTP durch.

Liest die Konfiguration aus der .env-Datei im Stammverzeichnis des Projekts.
Stellt sicher, dass die notwendigen Umgebungsvariablen gesetzt sind.
"""

import sys
import os

# Füge das Projekt-Stammverzeichnis zum Python-Pfad hinzu
# Dies ermöglicht den Import von Modulen aus src/
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.insert(0, project_root)

# Lade Umgebungsvariablen *bevor* Module importiert werden, die sie benötigen
from dotenv import load_dotenv
load_dotenv(dotenv_path=os.path.join(project_root, '.env'))

import logging
from src.database import test_mysql_connection
from src.sftp import test_sftp_connection

# Logging konfigurieren (konsistent mit connection Modulen)
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def run_tests():
    """ Führt die Verbindungs-Tests aus. """
    logging.info("Starte Verbindungstests...")

    # Überprüfe notwendige Umgebungsvariablen (optional, aber hilfreich)
    required_mysql_vars = ["MYSQL_HOST", "MYSQL_USER", "MYSQL_PASSWORD", "MYSQL_DATABASE", "MYSQL_PORT"]
    required_sftp_vars = ["SFTP_HOST", "SFTP_USER"]
    # SFTP braucht entweder Passwort oder Schlüssel
    sftp_auth_vars_present = os.getenv("SFTP_PASSWORD") or os.getenv("SFTP_KEY_PATH")

    if not all(os.getenv(var) for var in required_mysql_vars):
        logging.warning("Einige MySQL Umgebungsvariablen fehlen in .env. Test wird möglicherweise fehlschlagen.")

    if not all(os.getenv(var) for var in required_sftp_vars) or not sftp_auth_vars_present:
        logging.warning("Einige SFTP Umgebungsvariablen (Host, User, Password/Key) fehlen in .env. Test wird möglicherweise fehlschlagen.")

    mysql_ok = False
    sftp_ok = False

    # Teste MySQL
    logging.info("--- Teste MySQL Verbindung ---")
    try:
        mysql_ok = test_mysql_connection()
    except Exception as e:
        logging.error(f"Fehler beim Ausführen des MySQL-Tests: {e}", exc_info=True)

    # Teste SFTP
    logging.info("--- Teste SFTP Verbindung ---")
    try:
        sftp_ok = test_sftp_connection()
    except Exception as e:
        logging.error(f"Fehler beim Ausführen des SFTP-Tests: {e}", exc_info=True)

    logging.info("--- Testergebnisse ---")
    logging.info(f"MySQL Verbindung: {'OK' if mysql_ok else 'FEHLGESCHLAGEN'}")
    logging.info(f"SFTP Verbindung:  {'OK' if sftp_ok else 'FEHLGESCHLAGEN'}")

    if mysql_ok and sftp_ok:
        logging.info("Alle Verbindungstests erfolgreich.")
        return True
    else:
        logging.error("Ein oder mehrere Verbindungstests sind fehlgeschlagen.")
        return False

if __name__ == "__main__":
    if not run_tests():
        sys.exit(1) # Beende mit Fehlercode, falls Tests fehlschlagen