#!/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 ############################################################## # ################ # 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}"