From 97eeffd9eab20322e77041cccc6b6db596d4876b Mon Sep 17 00:00:00 2001 From: AkiNoKure Date: Mon, 9 Mar 2026 10:49:29 +0100 Subject: [PATCH] fix : correctifs multiple --- .gitignore | 2 + BackupVaultWarden/.env.exemple | 31 ++++++++++- BackupVaultWarden/backup-vaultwarden.sh | 23 +++++++++ CHANGELOG.md | 2 +- CheckStorage/.env.exemple | 5 ++ CheckStorage/README.md | 6 +++ CheckStorage/check-storage.sh | 68 ++++++++++++++++++++++++- 7 files changed, 134 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index a4f34b2..b4b4c53 100644 --- a/.gitignore +++ b/.gitignore @@ -10,12 +10,14 @@ # Sous-dossiers RecetteScripts/.env CheckStorage/.env +BackupVaultWarden/.env # Garder les fichiers exemple !*.env.exemple !*.env.example !CheckStorage/.env.exemple !RecetteScripts/.env.exemple +!BackupVaultWarden/.env.exemple ######################################## # Logs diff --git a/BackupVaultWarden/.env.exemple b/BackupVaultWarden/.env.exemple index 8a1e463..2641b01 100644 --- a/BackupVaultWarden/.env.exemple +++ b/BackupVaultWarden/.env.exemple @@ -1,6 +1,35 @@ +############################################# +# VAULTWARDEN BACKUP CONFIGURATION +############################################# + +# Répertoire contenant les données Vaultwarden DATA_DIR= + +############################################# +# BACKUP LOCAL +############################################# + +# Dossier local où seront stockées les archives LOCAL_BACKUP= + + +############################################# +# SERVEUR DE BACKUP DISTANT +############################################# + +# Utilisateur SSH du serveur distant REMOTE_USER= + +# Host ou IP du serveur distant REMOTE_HOST= + +# Répertoire distant de stockage des backups REMOTE_DIR= -SSH_KEY= + + +############################################# +# AUTHENTIFICATION SSH +############################################# + +# Chemin vers la clé privée SSH utilisée pour la connexion +SSH_KEY= \ No newline at end of file diff --git a/BackupVaultWarden/backup-vaultwarden.sh b/BackupVaultWarden/backup-vaultwarden.sh index 5f92a05..89226aa 100644 --- a/BackupVaultWarden/backup-vaultwarden.sh +++ b/BackupVaultWarden/backup-vaultwarden.sh @@ -1,5 +1,28 @@ #!/usr/bin/env bash set -euo pipefail +############################################################################### +# backup-vaultwarden.sh +# +# Ce script réalise une sauvegarde complète des données Vaultwarden +# en compressant le répertoire contenant les données, puis transfère +# l’archive vers un serveur distant de stockage via SSH. +# +# Fonctionnement global : +# 1. charge la configuration depuis le fichier .env ; +# 2. initialise les chemins du script et le fichier de log ; +# 3. vérifie la présence des variables obligatoires dans le .env ; +# 4. vérifie l’existence du dossier de données Vaultwarden ; +# 5. crée une archive compressée (.tar.gz) du dossier DATA_DIR ; +# 6. crée le dossier de destination sur le serveur distant ; +# 7. transfère l’archive vers le serveur distant via SCP ; +# 8. supprime l’archive locale après transfert ; +# 9. enregistre les opérations dans un fichier log ; +# 10. envoie une notification Discord indiquant le succès ou l’échec. +# +# Le script est conçu pour être exécuté automatiquement via cron +# et permet de conserver une copie distante des données Vaultwarden +# afin de garantir leur récupération en cas de perte locale. +############################################################################### ####################################### # Chemins fixes du script diff --git a/CHANGELOG.md b/CHANGELOG.md index fc83105..d241fa7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,7 @@ WEBHOOK_URL * [#372] Script de check si la machine a le stockage plein * [#378] Script Backup BDD Vaultwarden * [#381] Variabiliser tous les scripts -* [#] Fix Correctif +* [#384] Fix Correctif ### Changed ### Fixed diff --git a/CheckStorage/.env.exemple b/CheckStorage/.env.exemple index 541796c..756f1a5 100644 --- a/CheckStorage/.env.exemple +++ b/CheckStorage/.env.exemple @@ -1 +1,6 @@ +############################################# +# DISCORD +############################################# + +# Webhook Discord pour notifications WEBHOOK_URL= \ No newline at end of file diff --git a/CheckStorage/README.md b/CheckStorage/README.md index a8190dd..f554e02 100644 --- a/CheckStorage/README.md +++ b/CheckStorage/README.md @@ -20,6 +20,12 @@ La limite d'alerte est fixée à 70% d'utilisation, mais vous pouvez ajuster cet ``` ## Utilisation du script +0. Copiez le fichier d'environnement exemple et modifiez les variables selon votre configuration : + ```bash + cp .env.example .env + nano .env + ``` + 1. Donnez les permissions d'exécution au script : ```bash chmod +x check-storage.sh diff --git a/CheckStorage/check-storage.sh b/CheckStorage/check-storage.sh index 6a13800..213aa37 100644 --- a/CheckStorage/check-storage.sh +++ b/CheckStorage/check-storage.sh @@ -1,21 +1,87 @@ #!/bin/bash +############################################################################### +# disk-usage-check.sh +# +# Ce script vérifie l'utilisation du disque sur la partition racine "/". +# Si l'utilisation dépasse un seuil défini, une alerte est envoyée sur Discord +# via un webhook. +# +# Fonctionnement : +# 1. Définit une limite maximale d'utilisation du disque (limit). +# 2. Récupère l'URL du webhook Discord depuis le fichier .env. +# 3. Récupère les informations disque avec la commande df : +# - espace total +# - espace utilisé +# - espace disponible +# - pourcentage d'utilisation +# 4. Convertit les valeurs bytes en gigaoctets pour un affichage lisible. +# 5. Si l'utilisation dépasse la limite définie : +# - envoie un message d'alerte sur Discord. +# 6. Affiche dans la console les informations de stockage. +# +# Ce script est généralement exécuté via cron pour surveiller +# automatiquement l'espace disque d'un serveur. +############################################################################### + +############################################################################### +# CONFIGURATION +############################################################################### + +# Limite maximale d'utilisation du disque en pourcentage limit=70 + +# Récupération du webhook Discord depuis le fichier .env +# Le script cherche la ligne WEBHOOK_URL= et extrait la valeur WEBHOOK_URL=$(grep -E '^WEBHOOK_URL=' .env | cut -d '=' -f2-) +############################################################################### +# RÉCUPÉRATION DES INFORMATIONS DISQUE +############################################################################### + +# La commande df -B1 renvoie les informations disque en bytes +# awk récupère la ligne correspondant à la partition "/" +# puis extrait les informations read -r total_bytes used_bytes avail_bytes usage <<<"$(df -B1 / | awk 'NR==2 {gsub(/%/,"",$5); print $2, $3, $4, $5}')" + +# Calcul du pourcentage d'espace libre free=$((100 - usage)) + +############################################################################### +# CONVERSION EN GIGAOCTETS +############################################################################### + +# Conversion bytes → gigaoctets pour un affichage plus lisible used_gb=$(awk -v b="$used_bytes" 'BEGIN {printf "%.2f", b/1024/1024/1024}') total_gb=$(awk -v b="$total_bytes" 'BEGIN {printf "%.2f", b/1024/1024/1024}') avail_gb=$(awk -v b="$avail_bytes" 'BEGIN {printf "%.2f", b/1024/1024/1024}') + +############################################################################### +# VÉRIFICATION DU SEUIL D'UTILISATION +############################################################################### + +# Si l'utilisation dépasse la limite définie, +# une alerte est envoyée sur Discord if [ "$usage" -ge "$limit" ]; then + msgLimit="@here\n**CHECK STOCKAGE :red_circle:**\nLimite autorisé : ${limit}%\nUtilisation actuelle: ${usage}%\nEspace restant: ${free}%\nUtilise / total: ${used_gb} GB / ${total_gb} GB\nDisponible: ${avail_gb} GB\nHeure: $(date)" + curl -X POST \ -H "Accept: application/json" \ -H "Content-Type: application/json; charset=utf-8" \ -d "{\"content\":\"$msgLimit\"}" \ "$WEBHOOK_URL" -fi + +fi0 + +############################################################## +# ################ +# AFFICHAGE DES INFORMATIONS STOCKAGE +############################################################################### + +# Affichage des informations disque dans la console echo "Espace disponible : ${avail_gb} GB" echo "Espace utilise / espace total : ${used_gb} GB / ${total_gb} GB" + +# Nom de la machine exécutant le script echo "Name: ${HOSTNAME}" \ No newline at end of file