#!/bin/bash # Pfad zur .env-Datei dynamisch ermitteln ENV_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).env" # Prüfen, ob die .env-Datei existiert if [[ ! -f "$ENV_FILE" ]]; then echo "Fehler: Konfigurationsdatei $ENV_FILE nicht gefunden." exit 1 fi # .env-Datei laden source "$ENV_FILE" LOG_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).log" # Logdatei im gleichen Verzeichnis wie das Script # Funktion zum Überprüfen, ob ein Zustand in der Benachrichtigungsliste enthalten ist should_notify() { local state=$1 for notify_state in "${SEND_NOTIFICATIONS[@]}"; do if [[ "$state" == "$notify_state" ]]; then return 0 fi done return 1 } # Funktion zum Loggen log_message() { if [[ "$LOGGING" == true ]]; then timestamp=$(date +"%Y-%m-%d %H:%M:%S") echo "$timestamp - $1" >> "$LOG_FILE" fi } # Zeitstempel in die Logdatei schreiben log_message "Script aufgerufen. DUPLICATI__PARSED_RESULT: $DUPLICATI__PARSED_RESULT" # Überprüfen, ob Benachrichtigung gesendet werden soll if should_notify "$DUPLICATI__PARSED_RESULT"; then case "$DUPLICATI__PARSED_RESULT" in "Success") PRIORITY="default" TAGS="heavy_check_mark" TITLE="Backup abgeschlossen" MESSAGE="Das Backup wurde erfolgreich abgeschlossen" ;; "Warning") PRIORITY="medium" TAGS="warning" TITLE="Backup abgeschlossen mit Warnungen" MESSAGE="Das Backup wurde abgeschlossen, aber es gab Warnungen" ;; "Error") PRIORITY="high" TAGS="x" TITLE="Backup fehlgeschlagen" MESSAGE="Es gab ein Problem beim Erstellen des Backups" ;; "Fatal") PRIORITY="urgent" TAGS="skull" TITLE="Schwerwiegender Fehler beim Backup" MESSAGE="Das Backup konnte aufgrund eines schwerwiegenden Fehlers nicht abgeschlossen werden" ;; *) PRIORITY="low" TAGS="question" TITLE="Unbekannter Zustand" MESSAGE="Der Zustand des Backups ist unbekannt" ;; esac # curl Befehl vorbereiten CURL_CMD="curl -s -X POST \"$NTFY_URL\" \ -H \"Authorization: Bearer $AUTH_TOKEN\" \ -H \"Priority: $PRIORITY\" \ -H \"Tags: $TAGS\" \ -H \"Icon: $ICON\" \ -H \"Content-Type: application/json\" \ -d '{\"topic\": \"Duplicati\", \"title\": \"$TITLE\", \"message\": \"$MESSAGE\\n\\nServer: $SERVER_NAME\\nJobname: $DUPLICATI__backup_name\\nStatus: $DUPLICATI__PARSED_RESULT\", \"click\": \"\", \"actions\": [{ \"action\": \"view\", \"label\": \"Duplicati öffnen\", \"url\": \"$DUPLICATI_URL\" }]}' " # Log den curl-Befehl log_message "curl Befehl: $CURL_CMD" # Benachrichtigung senden /bin/bash -c "$CURL_CMD" fi exit 0