#!/bin/bash # Skript zur Ausführung des MySQL-Timestamp-Check-Skripts # Autor: # Datum: $(date +%Y-%m-%d) # Verzeichnis des Skripts bestimmen SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" # Log-Datei LOG_FILE="${SCRIPT_DIR}/timestamp_check_$(date +%Y-%m-%d).log" # Pushover-Konfiguration # Diese Werte sollten in einer separaten Konfigurationsdatei gesetzt oder # als Umgebungsvariablen bereitgestellt werden PUSHOVER_USER_KEY="uo2sf2pmrtjvt8auu786fviabimimr" # Dein User Key PUSHOVER_API_TOKEN="awe7dpqsh73muuk12qwa4pk5eie99y" # Dein API Token/Application Key # Funktion zum Senden von Pushover-Benachrichtigungen send_pushover() { local title="$1" local message="$2" local priority="${3:-0}" # 0 ist normale Priorität, 1 ist hoch, 2 ist Notfall # Überprüfen, ob CURL installiert ist if ! command -v curl &> /dev/null; then echo "WARNUNG: curl ist nicht installiert. Pushover-Benachrichtigung kann nicht gesendet werden." | tee -a "$LOG_FILE" return 1 fi # Überprüfen, ob Pushover-Schlüssel konfiguriert sind if [[ "$PUSHOVER_USER_KEY" == "dein-user-key" || "$PUSHOVER_API_TOKEN" == "dein-api-token" ]]; then echo "WARNUNG: Pushover-Schlüssel sind nicht konfiguriert. Benachrichtigung nicht gesendet." | tee -a "$LOG_FILE" return 1 fi # Senden der Pushover-Benachrichtigung curl -s \ --form-string "token=$PUSHOVER_API_TOKEN" \ --form-string "user=$PUSHOVER_USER_KEY" \ --form-string "title=$title" \ --form-string "message=$message" \ --form-string "priority=$priority" \ https://api.pushover.net/1/messages.json >/dev/null local result=$? if [ $result -eq 0 ]; then echo "Pushover-Benachrichtigung gesendet: $title" | tee -a "$LOG_FILE" else echo "Fehler beim Senden der Pushover-Benachrichtigung (Fehlercode: $result)" | tee -a "$LOG_FILE" fi return $result } # Start des Skripts loggen echo "$(date +"%Y-%m-%d %H:%M:%S") - Starte MySQL Timestamp Check" | tee -a "$LOG_FILE" # Python-Umgebung aktivieren (falls eine virtuelle Umgebung verwendet wird) # Auskommentieren, wenn keine virtuelle Umgebung verwendet wird # source "${SCRIPT_DIR}/venv/bin/activate" # Zum Skriptverzeichnis wechseln cd "$SCRIPT_DIR" # Python-Skript ausführen # Mögliche Parameter: # --test: Testmodus (keine E-Mail senden) # --timestamp-column=spaltenname: falls andere Spalte als add_date verwendet werden soll # Normale Ausführung python3 mysql_timestamp_check.py 2>&1 | tee -a "$LOG_FILE" # Exit-Code des Python-Skripts erhalten EXIT_CODE=${PIPESTATUS[0]} # Ende des Skripts loggen echo "$(date +"%Y-%m-%d %H:%M:%S") - MySQL Timestamp Check beendet (Exit-Code: $EXIT_CODE)" | tee -a "$LOG_FILE" # Benachrichtigung bei Fehlern im Skript selbst oder wenn Python wegen nicht aktueller Tabellen mit Exit-Code 1 beendet wurde if [ $EXIT_CODE -ne 0 ]; then # Art des Fehlers ermitteln if [ $EXIT_CODE -eq 1 ]; then # Exit-Code 1 = Nicht aktuelle Tabellen gefunden (E-Mail wurde bereits vom Python-Skript gesendet) PUSHOVER_TITLE="MySQL Timestamp Check: Nicht aktuelle Tabellen" PUSHOVER_MESSAGE="Einige Tabellen haben keine Daten von gestern. Details wurden per E-Mail gesendet." PUSHOVER_PRIORITY=1 # Höhere Priorität else # Andere Exit-Codes = Fehler im Skript selbst PUSHOVER_TITLE="MySQL Timestamp Check: Fehler im Skript" PUSHOVER_MESSAGE="Fehler beim Ausführen des Timestamp-Check-Skripts (Exit-Code: $EXIT_CODE). Bitte überprüfen Sie die Log-Datei." PUSHOVER_PRIORITY=2 # Notfall-Priorität fi # Pushover-Benachrichtigung senden send_pushover "$PUSHOVER_TITLE" "$PUSHOVER_MESSAGE" "$PUSHOVER_PRIORITY" fi exit $EXIT_CODE