add Pushover

master
Sebastian Serfling 2025-03-24 10:21:30 +01:00
parent 011d4c5374
commit 40989f978e
1 changed files with 63 additions and 10 deletions

View File

@ -10,13 +10,56 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# Log-Datei
LOG_FILE="${SCRIPT_DIR}/timestamp_check_$(date +%Y-%m-%d).log"
# Python-Umgebung aktivieren (falls eine virtuelle Umgebung verwendet wird)
# Auskommentieren, wenn keine virtuelle Umgebung verwendet wird
# source "${SCRIPT_DIR}/venv/bin/activate"
# 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"
@ -28,19 +71,29 @@ cd "$SCRIPT_DIR"
# Normale Ausführung
python3 mysql_timestamp_check.py 2>&1 | tee -a "$LOG_FILE"
# Testmodus (auskommentiert)
# python mysql_timestamp_check.py --test 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"
# E-Mail bei Fehler im Skript selbst (nicht bei fehlenden Daten, da das Python-Skript dies bereits handhabt)
if [ $EXIT_CODE -ne 0 ] && [ $EXIT_CODE -ne 1 ]; then
# Hier kann optional eine E-Mail für Fehler im Skript selbst gesendet werden
echo "Fehler beim Ausführen des Timestamp-Check-Skripts. Bitte überprüfen Sie die Log-Datei $LOG_FILE" | 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