fix : correctifs multiple
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -10,12 +10,14 @@
|
|||||||
# Sous-dossiers
|
# Sous-dossiers
|
||||||
RecetteScripts/.env
|
RecetteScripts/.env
|
||||||
CheckStorage/.env
|
CheckStorage/.env
|
||||||
|
BackupVaultWarden/.env
|
||||||
|
|
||||||
# Garder les fichiers exemple
|
# Garder les fichiers exemple
|
||||||
!*.env.exemple
|
!*.env.exemple
|
||||||
!*.env.example
|
!*.env.example
|
||||||
!CheckStorage/.env.exemple
|
!CheckStorage/.env.exemple
|
||||||
!RecetteScripts/.env.exemple
|
!RecetteScripts/.env.exemple
|
||||||
|
!BackupVaultWarden/.env.exemple
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# Logs
|
# Logs
|
||||||
|
|||||||
@@ -1,6 +1,35 @@
|
|||||||
|
#############################################
|
||||||
|
# VAULTWARDEN BACKUP CONFIGURATION
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# Répertoire contenant les données Vaultwarden
|
||||||
DATA_DIR=
|
DATA_DIR=
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# BACKUP LOCAL
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# Dossier local où seront stockées les archives
|
||||||
LOCAL_BACKUP=
|
LOCAL_BACKUP=
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# SERVEUR DE BACKUP DISTANT
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# Utilisateur SSH du serveur distant
|
||||||
REMOTE_USER=
|
REMOTE_USER=
|
||||||
|
|
||||||
|
# Host ou IP du serveur distant
|
||||||
REMOTE_HOST=
|
REMOTE_HOST=
|
||||||
|
|
||||||
|
# Répertoire distant de stockage des backups
|
||||||
REMOTE_DIR=
|
REMOTE_DIR=
|
||||||
SSH_KEY=
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# AUTHENTIFICATION SSH
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# Chemin vers la clé privée SSH utilisée pour la connexion
|
||||||
|
SSH_KEY=
|
||||||
@@ -1,5 +1,28 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
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
|
# Chemins fixes du script
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ WEBHOOK_URL
|
|||||||
* [#372] Script de check si la machine a le stockage plein
|
* [#372] Script de check si la machine a le stockage plein
|
||||||
* [#378] Script Backup BDD Vaultwarden
|
* [#378] Script Backup BDD Vaultwarden
|
||||||
* [#381] Variabiliser tous les scripts
|
* [#381] Variabiliser tous les scripts
|
||||||
* [#] Fix Correctif
|
* [#384] Fix Correctif
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -1 +1,6 @@
|
|||||||
|
#############################################
|
||||||
|
# DISCORD
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# Webhook Discord pour notifications
|
||||||
WEBHOOK_URL=
|
WEBHOOK_URL=
|
||||||
@@ -20,6 +20,12 @@ La limite d'alerte est fixée à 70% d'utilisation, mais vous pouvez ajuster cet
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Utilisation du script
|
## 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 :
|
1. Donnez les permissions d'exécution au script :
|
||||||
```bash
|
```bash
|
||||||
chmod +x check-storage.sh
|
chmod +x check-storage.sh
|
||||||
|
|||||||
@@ -1,21 +1,87 @@
|
|||||||
#!/bin/bash
|
#!/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
|
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-)
|
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}')"
|
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))
|
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}')
|
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}')
|
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}')
|
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
|
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)"
|
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 \
|
curl -X POST \
|
||||||
-H "Accept: application/json" \
|
-H "Accept: application/json" \
|
||||||
-H "Content-Type: application/json; charset=utf-8" \
|
-H "Content-Type: application/json; charset=utf-8" \
|
||||||
-d "{\"content\":\"$msgLimit\"}" \
|
-d "{\"content\":\"$msgLimit\"}" \
|
||||||
"$WEBHOOK_URL"
|
"$WEBHOOK_URL"
|
||||||
fi
|
|
||||||
|
fi0
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
# ################
|
||||||
|
# AFFICHAGE DES INFORMATIONS STOCKAGE
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
# Affichage des informations disque dans la console
|
||||||
echo "Espace disponible : ${avail_gb} GB"
|
echo "Espace disponible : ${avail_gb} GB"
|
||||||
echo "Espace utilise / espace total : ${used_gb} GB / ${total_gb} GB"
|
echo "Espace utilise / espace total : ${used_gb} GB / ${total_gb} GB"
|
||||||
|
|
||||||
|
# Nom de la machine exécutant le script
|
||||||
echo "Name: ${HOSTNAME}"
|
echo "Name: ${HOSTNAME}"
|
||||||
Reference in New Issue
Block a user