Zustände die Benachrichtigungen auslösen sollen in eigene Variablen ausgelagert. Prioritäten ebenfalls für jeden Zustand wählbar
This commit is contained in:
@@ -9,10 +9,20 @@ SERVER_NAME=n100
|
|||||||
# NTFY Icon (Optional / Leer lassen falls nicht benötigt)
|
# NTFY Icon (Optional / Leer lassen falls nicht benötigt)
|
||||||
ICON=http://192.168.178.25:3030/icons/n100.png
|
ICON=http://192.168.178.25:3030/icons/n100.png
|
||||||
|
|
||||||
# Zustände, die Benachrichtigungen auslösen
|
# Backup Rückmeldungen die NTFY Benachrichtigungen auslösen sollen
|
||||||
# (Success, Warning, Error, Fatal, Unknown)
|
DUPLICATI_SUCCESS=true
|
||||||
SEND_NOTIFICATIONS="Fatal Error Unknown"
|
DUPLICATI_WARNING=true
|
||||||
|
DUPLICATI_ERROR=true
|
||||||
|
DUPLICATI_FATAL=true
|
||||||
|
DUPLICATI_UNKNOWN=true
|
||||||
|
|
||||||
|
# Welche NTFY Meldungs Prioritäten sollen mitgeschickt werden.
|
||||||
|
# Erlaubte Werte: min, low, default, high, max
|
||||||
|
PRIORITY_SUCCESS=default
|
||||||
|
PRIORITY_WARNING=high
|
||||||
|
PRIORITY_ERROR=max
|
||||||
|
PRIORITY_FATAL=max
|
||||||
|
PRIORITY_UNKNOWN=max
|
||||||
|
|
||||||
# Wählen Sie das Logging level. Möglich Werte: off, normal, debug
|
# Wählen Sie das Logging level. Möglich Werte: off, normal, debug
|
||||||
# Die Logdatei wird im gleichen Verzeichnis wie das Script selbst gespeichert.
|
|
||||||
LOGGING=off
|
LOGGING=off
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
LOG_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).log" # Logdatei im gleichen Verzeichnis wie das Script
|
LOG_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).log" # Logdatei im gleichen Verzeichnis wie das Script
|
||||||
|
|
||||||
# Funktion zum Loggen
|
# Funktion zum Loggen
|
||||||
@@ -9,14 +8,11 @@ log_message() {
|
|||||||
|
|
||||||
case "$LOGGING" in
|
case "$LOGGING" in
|
||||||
"off")
|
"off")
|
||||||
# Kein Logging
|
|
||||||
;;
|
;;
|
||||||
"normal")
|
"normal")
|
||||||
# Nur normale Logs (keine Debug-Ausgaben)
|
|
||||||
echo "$timestamp - $1" >> "$LOG_FILE"
|
echo "$timestamp - $1" >> "$LOG_FILE"
|
||||||
;;
|
;;
|
||||||
"debug")
|
"debug")
|
||||||
# Logs für Debug und normale Nachrichten
|
|
||||||
echo "$timestamp - [DEBUG] $1" >> "$LOG_FILE"
|
echo "$timestamp - [DEBUG] $1" >> "$LOG_FILE"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -28,7 +24,6 @@ log_message() {
|
|||||||
# Pfad zur .env-Datei dynamisch ermitteln
|
# Pfad zur .env-Datei dynamisch ermitteln
|
||||||
ENV_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).env"
|
ENV_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).env"
|
||||||
|
|
||||||
|
|
||||||
# Prüfen, ob die .env-Datei existiert
|
# Prüfen, ob die .env-Datei existiert
|
||||||
if [[ ! -f "$ENV_FILE" ]]; then
|
if [[ ! -f "$ENV_FILE" ]]; then
|
||||||
LOGGING="debug"
|
LOGGING="debug"
|
||||||
@@ -37,11 +32,11 @@ if [[ ! -f "$ENV_FILE" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# .env-Datei laden
|
# .env-Datei laden
|
||||||
source "$ENV_FILE"
|
source "$ENV_FILE"
|
||||||
|
|
||||||
log_message "##################### Script gestartet #####################"
|
log_message "##################### Script gestartet #####################"
|
||||||
|
log_message "Duplicati meldet ein beendetes Backup. Zustand: '$DUPLICATI__PARSED_RESULT'."
|
||||||
|
|
||||||
# Alle Umgebungsvariablen ins Log schreiben, nur bei Debug-Level
|
# Alle Umgebungsvariablen ins Log schreiben, nur bei Debug-Level
|
||||||
if [[ "$LOGGING" == "debug" ]]; then
|
if [[ "$LOGGING" == "debug" ]]; then
|
||||||
@@ -49,59 +44,96 @@ if [[ "$LOGGING" == "debug" ]]; then
|
|||||||
env >> "$LOG_FILE"
|
env >> "$LOG_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Zeitstempel in die Logdatei schreiben
|
|
||||||
log_message "Duplicati Umgebungsvariable DUPLICATI__PARSED_RESULT: $DUPLICATI__PARSED_RESULT"
|
|
||||||
log_message "SEND_NOTIFICATIONS Variable aus der .env Datei: $SEND_NOTIFICATIONS"
|
|
||||||
|
|
||||||
|
|
||||||
# Umwandeln der SEND_NOTIFICATIONS in ein Array, falls es nicht bereits als Array vorliegt
|
|
||||||
SEND_NOTIFICATIONS=($SEND_NOTIFICATIONS)
|
|
||||||
|
|
||||||
# Funktion zum Überprüfen, ob ein Zustand in der Benachrichtigungsliste enthalten ist
|
# Funktion zum Überprüfen, ob ein Zustand in der Benachrichtigungsliste enthalten ist
|
||||||
should_notify() {
|
should_notify() {
|
||||||
local state=$1
|
local state=$1
|
||||||
for notify_state in "${SEND_NOTIFICATIONS[@]}"; do
|
local variable
|
||||||
if [[ "$state" == "$notify_state" ]]; then
|
|
||||||
log_message "Benachrichtigung wird gesendet für den Zustand: $state"
|
# Variable basierend auf dem Zustand bestimmen
|
||||||
return 0
|
case "$state" in
|
||||||
fi
|
"Success") variable="$DUPLICATI_SUCCESS" ;;
|
||||||
done
|
"Warning") variable="$DUPLICATI_WARNING" ;;
|
||||||
log_message "Keine Benachrichtigung für den Zustand '$state' erforderlich."
|
"Error") variable="$DUPLICATI_ERROR" ;;
|
||||||
return 1
|
"Fatal") variable="$DUPLICATI_FATAL" ;;
|
||||||
|
"Unknown") variable="$DUPLICATI_UNKNOWN" ;;
|
||||||
|
*)
|
||||||
|
log_message "Unbekannter Zustand '$state'. Wert wurde auf 'true' gesetzt."
|
||||||
|
return 0 # Fallback: Standardmäßig true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Prüfen, ob explizit "false" gesetzt wurde
|
||||||
|
if [[ "${variable,,}" == "false" ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [[ "${variable,,}" == "true" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Standardmäßig true für alle anderen Werte
|
||||||
|
log_message "[ERR] Variable 'DUPLICATI_${DUPLICATI__PARSED_RESULT^^}=$variable' ist unzulässig'"
|
||||||
|
log_message "[ERR] Überprüfen Sie die Einstellungen zu:"
|
||||||
|
log_message "[ERR] 'Rückmeldungen die NTFY Benachrichtigungen auslösen sollen'"
|
||||||
|
log_message "[ERR] Sicherheitshalber wird die Variable auf 'true' gesetzt"
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Funktion, um die Priorität basierend auf dem Zustand zu bestimmen
|
||||||
|
get_priority() {
|
||||||
|
local state=$1
|
||||||
|
case "$state" in
|
||||||
|
"Success")
|
||||||
|
echo "${PRIORITY_SUCCESS:-default}"
|
||||||
|
;;
|
||||||
|
"Warning")
|
||||||
|
echo "${PRIORITY_WARNING:-high}"
|
||||||
|
;;
|
||||||
|
"Error")
|
||||||
|
echo "${PRIORITY_ERROR:-max}"
|
||||||
|
;;
|
||||||
|
"Fatal")
|
||||||
|
echo "${PRIORITY_FATAL:-max}"
|
||||||
|
;;
|
||||||
|
"Unknown")
|
||||||
|
echo "${PRIORITY_UNKNOWN:-max}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log_message "Unbekannter Zustand '$state' für Priorität."
|
||||||
|
echo "low"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
# Überprüfen, ob Benachrichtigung gesendet werden soll
|
# Überprüfen, ob Benachrichtigung gesendet werden soll
|
||||||
if should_notify "$DUPLICATI__PARSED_RESULT"; then
|
if should_notify "$DUPLICATI__PARSED_RESULT"; then
|
||||||
|
PRIORITY=$(get_priority "$DUPLICATI__PARSED_RESULT")
|
||||||
|
|
||||||
|
log_message "NTFY für '$DUPLICATI__PARSED_RESULT' wird gesendet. Priorität: '$PRIORITY'"
|
||||||
|
|
||||||
case "$DUPLICATI__PARSED_RESULT" in
|
case "$DUPLICATI__PARSED_RESULT" in
|
||||||
"Success")
|
"Success")
|
||||||
PRIORITY="default"
|
|
||||||
TAGS="heavy_check_mark"
|
TAGS="heavy_check_mark"
|
||||||
TITLE="Backup abgeschlossen"
|
TITLE="Backup abgeschlossen"
|
||||||
MESSAGE="Das Backup wurde erfolgreich abgeschlossen"
|
MESSAGE="Das Backup wurde erfolgreich abgeschlossen"
|
||||||
;;
|
;;
|
||||||
"Warning")
|
"Warning")
|
||||||
PRIORITY="medium"
|
|
||||||
TAGS="warning"
|
TAGS="warning"
|
||||||
TITLE="Backup abgeschlossen mit Warnungen"
|
TITLE="Backup abgeschlossen mit Warnungen"
|
||||||
MESSAGE="Das Backup wurde abgeschlossen, aber es gab Warnungen"
|
MESSAGE="Das Backup wurde abgeschlossen, aber es gab Warnungen"
|
||||||
;;
|
;;
|
||||||
"Error")
|
"Error")
|
||||||
PRIORITY="high"
|
|
||||||
TAGS="x"
|
TAGS="x"
|
||||||
TITLE="Backup fehlgeschlagen"
|
TITLE="Backup fehlgeschlagen"
|
||||||
MESSAGE="Es gab ein Problem beim Erstellen des Backups"
|
MESSAGE="Es gab ein Problem beim Erstellen des Backups"
|
||||||
;;
|
;;
|
||||||
"Fatal")
|
"Fatal")
|
||||||
PRIORITY="urgent"
|
|
||||||
TAGS="skull"
|
TAGS="skull"
|
||||||
TITLE="Schwerwiegender Fehler beim Backup"
|
TITLE="Schwerwiegender Fehler beim Backup"
|
||||||
MESSAGE="Das Backup konnte aufgrund eines schwerwiegenden Fehlers nicht abgeschlossen werden"
|
MESSAGE="Das Backup konnte aufgrund eines schwerwiegenden Fehlers nicht abgeschlossen werden"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
PRIORITY="low"
|
|
||||||
TAGS="question"
|
TAGS="question"
|
||||||
TITLE="Unbekannter Zustand"
|
TITLE="Unbekannter Zustand"
|
||||||
MESSAGE="Der Zustand des Backups ist unbekannt"
|
MESSAGE="Der Zustand des Backups ist unbekannt"
|
||||||
@@ -113,13 +145,12 @@ if should_notify "$DUPLICATI__PARSED_RESULT"; then
|
|||||||
-H \"Authorization: Bearer $AUTH_TOKEN\" \
|
-H \"Authorization: Bearer $AUTH_TOKEN\" \
|
||||||
-H \"Priority: $PRIORITY\" \
|
-H \"Priority: $PRIORITY\" \
|
||||||
-H \"Tags: $TAGS\""
|
-H \"Tags: $TAGS\""
|
||||||
if [ -n "$ICON" ]; then
|
if [ -n "$ICON" ]; then
|
||||||
CURL_CMD="$CURL_CMD -H \"Icon: $ICON\""
|
CURL_CMD="$CURL_CMD -H \"Icon: $ICON\""
|
||||||
fi
|
fi
|
||||||
CURL_CMD="$CURL_CMD -H \"Content-Type: application/json\" \
|
CURL_CMD="$CURL_CMD -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\" }]}'"
|
-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 den curl-Befehl
|
||||||
if [[ "$LOGGING" == "debug" ]]; then
|
if [[ "$LOGGING" == "debug" ]]; then
|
||||||
log_message "curl Befehl: $CURL_CMD"
|
log_message "curl Befehl: $CURL_CMD"
|
||||||
@@ -127,6 +158,10 @@ if should_notify "$DUPLICATI__PARSED_RESULT"; then
|
|||||||
|
|
||||||
# Benachrichtigung senden
|
# Benachrichtigung senden
|
||||||
/bin/bash -c "$CURL_CMD"
|
/bin/bash -c "$CURL_CMD"
|
||||||
|
else
|
||||||
|
log_message "Keine NTFY Benachrichtigung für den Zustand '$DUPLICATI__PARSED_RESULT' erwünscht."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log_message "########################### ENDE ##########################"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
Reference in New Issue
Block a user