From b2beeb33341af5a399f2b9705782725fc33520c8 Mon Sep 17 00:00:00 2001 From: BeauTroll <-> Date: Wed, 17 Dec 2025 06:42:14 +0100 Subject: [PATCH] Fix ntfy notification hooks to use Borgmatic 2.0 environment variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace deprecated argument-based parameter passing with environment variables and dynamic data retrieval for archive names and error messages. Changes: - Remove "{archive_name}" and "{error}" placeholders from config.yaml - Update ntfy-success.sh to retrieve archive name via borgmatic list - Update ntfy-error.sh to extract error messages from systemd logs - Add repository information to both notification types 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- config.yaml | 4 ++-- hooks/ntfy-error.sh | 10 ++++++++-- hooks/ntfy-success.sh | 17 +++++++++-------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/config.yaml b/config.yaml index 19fb9c1..900bd25 100644 --- a/config.yaml +++ b/config.yaml @@ -75,12 +75,12 @@ commands: when: [create] run: - echo "Exécution hook de succès" - - /etc/borgmatic/hooks/ntfy-success.sh "{archive_name}" "{stats}" + - /etc/borgmatic/hooks/ntfy-success.sh - after: error run: - echo "Exécution hook d'erreur" - - /etc/borgmatic/hooks/ntfy-error.sh "{error}" + - /etc/borgmatic/hooks/ntfy-error.sh # Commandes PostgreSQL/MySQL si nécessaire # postgresql_databases: diff --git a/hooks/ntfy-error.sh b/hooks/ntfy-error.sh index 3b3504f..399a6dc 100755 --- a/hooks/ntfy-error.sh +++ b/hooks/ntfy-error.sh @@ -1,7 +1,7 @@ #!/bin/bash # # Hook Borgmatic - Notification d'erreur via ntfy -# Arguments: $1 = error message +# Borgmatic 2.0 utilise des variables d'environnement # # Charger les variables d'environnement @@ -9,7 +9,12 @@ if [ -f /etc/borgmatic/.env ]; then source /etc/borgmatic/.env fi -ERROR_MSG="${1:-Erreur inconnue}" +# Récupérer les dernières lignes d'erreur depuis les logs +ERROR_MSG=$(journalctl -u borgmatic.service -n 10 --no-pager | tail -5 | sed 's/^.*borgmatic: //') + +if [ -z "$ERROR_MSG" ]; then + ERROR_MSG="Erreur inconnue - vérifiez les logs" +fi # Envoyer notification d'erreur curl -s -u "$NTFY_USER" \ @@ -19,6 +24,7 @@ curl -s -u "$NTFY_USER" \ -d "Le backup a échoué ! Erreur: ${ERROR_MSG} Date: $(date '+%Y-%m-%d %H:%M:%S') +Repository: ${BORG_REPO} Vérifiez les logs: journalctl -u borgmatic.service -n 50" \ "$NTFY_URL" diff --git a/hooks/ntfy-success.sh b/hooks/ntfy-success.sh index d1d17f1..518b7d7 100755 --- a/hooks/ntfy-success.sh +++ b/hooks/ntfy-success.sh @@ -1,7 +1,7 @@ #!/bin/bash # # Hook Borgmatic - Notification de succès via ntfy -# Arguments: $1 = archive_name, $2 = stats +# Borgmatic 2.0 utilise des variables d'environnement # # Charger les variables d'environnement @@ -9,12 +9,12 @@ if [ -f /etc/borgmatic/.env ]; then source /etc/borgmatic/.env fi -ARCHIVE_NAME="${1:-inconnu}" -STATS="${2:-}" - -# Extraire la taille depuis les stats si disponible -# Borgmatic passe les stats en JSON, on peut parser ou utiliser directement -SIZE="voir logs pour détails" +# Récupérer le nom de la dernière archive créée +# Borgmatic 2.0 expose BORG_REPO et autres variables d'environnement +ARCHIVE_NAME=$(borgmatic list --last 1 --short 2>/dev/null | tail -1) +if [ -z "$ARCHIVE_NAME" ]; then + ARCHIVE_NAME="dernière archive" +fi # Envoyer notification de succès curl -s -u "$NTFY_USER" \ @@ -23,7 +23,8 @@ curl -s -u "$NTFY_USER" \ -H "Tags: white_check_mark,backup" \ -d "Backup terminé avec succès. Archive: ${ARCHIVE_NAME} -Date: $(date '+%Y-%m-%d %H:%M:%S')" \ +Date: $(date '+%Y-%m-%d %H:%M:%S') +Repository: ${BORG_REPO}" \ "$NTFY_URL" echo "Notification de succès envoyée à ntfy"