logging
This commit is contained in:
13
README.md
13
README.md
@@ -14,7 +14,7 @@ Dieses Bash-Skript sendet Benachrichtigungen basierend auf dem Ergebnis eines Du
|
|||||||
## Verwendung
|
## Verwendung
|
||||||
|
|
||||||
### 1. Konfiguration
|
### 1. Konfiguration
|
||||||
1. Platzieren Sie das Skript und eine .env-Datei im gleichen Verzeichnis. Die .env-Datei muss denselben Namen wie das Skript haben, jedoch mit der Endung `.env` (z. B. `shell_ntfy_duplicaty.sh` und `shell_ntfy_duplicaty.env`).
|
1. Platzieren Sie das Skript und eine .env-Datei im gleichen Verzeichnis. Die .env-Datei muss denselben Namen wie das Skript haben, jedoch mit der Endung `.env` (z. B. `shell_ntfy_duplicati.sh` und `shell_ntfy_duplicati.env`).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# NTFY Server
|
# NTFY Server
|
||||||
@@ -32,16 +32,15 @@ SEND_NOTIFICATIONS="Fatal Unknown"
|
|||||||
|
|
||||||
# Optional kann bei jedem Ausführen des Scripts ein Logeintrag erstellt werden.
|
# Optional kann bei jedem Ausführen des Scripts ein Logeintrag erstellt werden.
|
||||||
# Die Logdatei wird im gleichen Verzeichnis wie das Script selbst gespeichert.
|
# Die Logdatei wird im gleichen Verzeichnis wie das Script selbst gespeichert.
|
||||||
# Vermerkt werden der Inhalt der $DUPLICATI__PARSED_RESULT-Variable
|
# (off, normal, debug)
|
||||||
# und der daraus resultierende cURL-Befehl.
|
LOGGING=off
|
||||||
LOGGING=false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Setzen Sie die korrekten Dateiberechtigungen, um die Sicherheit zu gewährleisten und das Script ausführbar zu machen:
|
3. Setzen Sie die korrekten Dateiberechtigungen, um die Sicherheit zu gewährleisten und das Script ausführbar zu machen:
|
||||||
```bash
|
```bash
|
||||||
chmod 700 shell_ntfy_duplicaty.sh
|
chmod 700 shell_ntfy_duplicati.sh
|
||||||
chmod 600 shell_ntfy_duplicaty.env
|
chmod 600 shell_ntfy_duplicati.env
|
||||||
chmod +x shell_ntfy_duplicaty.sh
|
chmod +x shell_ntfy_duplicati.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Zustände
|
### 2. Zustände
|
||||||
|
|||||||
@@ -1,40 +1,77 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
LOG_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).log" # Logdatei im gleichen Verzeichnis wie das Script
|
||||||
|
|
||||||
|
# Funktion zum Loggen
|
||||||
|
log_message() {
|
||||||
|
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
|
case "$LOGGING" in
|
||||||
|
"off")
|
||||||
|
# Kein Logging
|
||||||
|
;;
|
||||||
|
"normal")
|
||||||
|
# Nur normale Logs (keine Debug-Ausgaben)
|
||||||
|
echo "$timestamp - $1" >> "$LOG_FILE"
|
||||||
|
;;
|
||||||
|
"debug")
|
||||||
|
# Logs für Debug und normale Nachrichten
|
||||||
|
echo "$timestamp - [DEBUG] $1" >> "$LOG_FILE"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Ungültiges Logging-Level: $LOGGING" >> "$LOG_FILE"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
# 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"
|
||||||
echo "Fehler: Konfigurationsdatei $ENV_FILE nicht gefunden."
|
echo "Fehler: Konfigurationsdatei $ENV_FILE nicht gefunden."
|
||||||
|
log_message "Fehler: Konfigurationsdatei $ENV_FILE nicht gefunden."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# .env-Datei laden
|
# .env-Datei laden
|
||||||
source "$ENV_FILE"
|
source "$ENV_FILE"
|
||||||
|
|
||||||
LOG_FILE="$(dirname "$(realpath "$0")")/$(basename "$0" .sh).log" # Logdatei im gleichen Verzeichnis wie das Script
|
log_message "##################### Script gestartet #####################"
|
||||||
|
|
||||||
|
# Alle Umgebungsvariablen ins Log schreiben, nur bei Debug-Level
|
||||||
|
if [[ "$LOGGING" == "debug" ]]; then
|
||||||
|
log_message "Umgebungsvariablen von Duplicati:"
|
||||||
|
env >> "$LOG_FILE"
|
||||||
|
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
|
for notify_state in "${SEND_NOTIFICATIONS[@]}"; do
|
||||||
if [[ "$state" == "$notify_state" ]]; then
|
if [[ "$state" == "$notify_state" ]]; then
|
||||||
|
log_message "Benachrichtigung wird gesendet für den Zustand: $state"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
log_message "Keine Benachrichtigung für den Zustand '$state' erforderlich."
|
||||||
return 1
|
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
|
# Überprüfen, ob Benachrichtigung gesendet werden soll
|
||||||
if should_notify "$DUPLICATI__PARSED_RESULT"; then
|
if should_notify "$DUPLICATI__PARSED_RESULT"; then
|
||||||
@@ -82,7 +119,11 @@ if should_notify "$DUPLICATI__PARSED_RESULT"; then
|
|||||||
"
|
"
|
||||||
|
|
||||||
# Log den curl-Befehl
|
# Log den curl-Befehl
|
||||||
log_message "curl Befehl: $CURL_CMD"
|
|
||||||
|
|
||||||
|
if [[ "$LOGGING" == "debug" ]]; then
|
||||||
|
log_message "curl Befehl: $CURL_CMD"
|
||||||
|
fi
|
||||||
|
|
||||||
# Benachrichtigung senden
|
# Benachrichtigung senden
|
||||||
/bin/bash -c "$CURL_CMD"
|
/bin/bash -c "$CURL_CMD"
|
||||||
|
|||||||
Reference in New Issue
Block a user