99 lines
3.7 KiB
Bash
99 lines
3.7 KiB
Bash
#!/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 |