

#!/bin/bash

# Pfad zum Python3-Skript und Log-Datei
SCRIPT_PATH="_path_/python/vavoo.py"
LOG_FILE="_path_/logs/vavoo.log"

# Funktion zum Starten des Skripts
start_script() {
    if [ ! -f "$SCRIPT_PATH" ]; then
        echo "Skript '$SCRIPT_PATH' existiert nicht."
        exit 1
    fi

    if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then
        echo "Skript '$SCRIPT_PATH' läuft bereits."
        exit 0
    fi

    echo "Starte Skript '$SCRIPT_PATH'..."
    nohup python3 "$SCRIPT_PATH" > "$LOG_FILE" 2>&1 &
    PID=$!
    echo "Skript '$SCRIPT_PATH' wurde mit PID $PID gestartet. Logs: '$LOG_FILE'."
}

# Funktion zum Stoppen des Skripts
stop_script() {
    PID=$(pgrep -f "python3 $SCRIPT_PATH")

    if [ -z "$PID" ]; then
        echo "Skript '$SCRIPT_PATH' läuft nicht."
        return 0
    fi

    echo "Beende Skript '$SCRIPT_PATH' mit PID $PID..."
    kill "$PID"

    # Warte kurz und prüfe, ob der Prozess wirklich beendet wurde
    sleep 1
    if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then
        echo "Skript konnte nicht normal beendet werden. Versuche mit 'kill -9'..."
        kill -9 "$PID"
        sleep 1
        if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then
            echo "Skript konnte nicht beendet werden."
            return 1
        else
            echo "Skript erfolgreich mit 'kill -9' beendet."
        fi
    else
        echo "Skript erfolgreich beendet."
    fi
    return 0
}

# Funktion zum Restarten des Skripts
restart_script() {
    stop_script
    sleep 0.5
    start_script
}

# Funktion zum Abfragen des Status
status_script() {
    if pgrep -f "python3 $SCRIPT_PATH" > /dev/null; then
        PID=$(pgrep -f "python3 $SCRIPT_PATH")
        echo "Skript '$SCRIPT_PATH' läuft mit PID $PID."
    else
        echo "Skript '$SCRIPT_PATH' läuft nicht."
    fi
}

# Hauptlogik: Argumente auswerten
if [ $# -eq 0 ]; then
    # Interaktives Menü, falls kein Argument übergeben wurde
    echo "Wähle eine Aktion für das Skript '$SCRIPT_PATH':"
    echo "start) Starten"
    echo "stop) Stoppen"
    echo "restart) Restarten"
    echo "status) Status abfragen"
    read -p "Eingabe (start/stop/restart/status): " choice
else
    # Argument auswerten
    choice="$1"
fi

case "$choice" in
    start)
        start_script
        ;;
    stop)
        stop_script
        ;;
    restart)
        restart_script
        ;;
    status)
        status_script
        ;;
    *)
        echo "Ungültige Eingabe. Bitte wähle start, stop, restart oder status."
        exit 1
        ;;
esac


