fix : changelog plus readme a jour
This commit is contained in:
@@ -4,3 +4,9 @@
|
||||
|
||||
# Webhook Discord pour notifications
|
||||
DISCORD_WEBHOOK_URL=
|
||||
|
||||
# Mention Discord en cas d'alerte
|
||||
DISCORD_PING=@here
|
||||
|
||||
# Seuil d'alerte en pourcentage d'utilisation
|
||||
STORAGE_ALERT_LIMIT=70
|
||||
|
||||
@@ -1,65 +1,51 @@
|
||||
# Scripts de vérification de l'espace de stockage
|
||||
# CheckStorage
|
||||
|
||||
Ce projet contient des scripts pour vérifier l'espace de stockage
|
||||
Script de vérification de l’espace disque sur Ubuntu Server, avec notification Discord optionnelle.
|
||||
|
||||
## Préambule
|
||||
Ce script est conçu pour vérifier l'espace de stockage disponible sur un serveur et envoyer une alerte
|
||||
La vérification de l'espace de stockage ce fait sur la partition racine.
|
||||
La limite d'alerte est fixée à 70% d'utilisation, mais vous pouvez ajuster cette valeur dans le script selon vos besoins.
|
||||
## Fonctionnement
|
||||
|
||||
## Installation du script
|
||||
Le script :
|
||||
|
||||
1. Clonez le dépôt GitHub :
|
||||
```bash
|
||||
git clone https://gitea.malio.fr/MALIO-DEV/Scripts-Serveur.git
|
||||
```
|
||||
|
||||
2. Accédez au répertoire du projet :
|
||||
3. ```bash
|
||||
cd Scripts-Serveur/CheckStorage
|
||||
```
|
||||
### Génération de la clé SSH
|
||||
1. charge `.env`
|
||||
2. lit l’utilisation de la partition `/`
|
||||
3. compare le taux d’occupation au seuil configuré
|
||||
4. envoie une alerte Discord si le seuil est dépassé
|
||||
|
||||
Sur la machine exécutant les scripts :
|
||||
## Pré-requis
|
||||
|
||||
Installation recommandée sur Ubuntu Server :
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519 -f ~/.ssh/check_storage_key
|
||||
sudo apt update
|
||||
sudo apt install -y coreutils gawk jq curl
|
||||
```
|
||||
Copier la clé sur le serveur distant :
|
||||
|
||||
`jq` et `curl` ne sont nécessaires que si `DISCORD_WEBHOOK_URL` est renseigné.
|
||||
|
||||
## Configuration
|
||||
|
||||
```bash
|
||||
ssh-copy-id -i ~/.ssh/check_storage_key.pub user@serveur
|
||||
cp .env.exemple .env
|
||||
chmod 600 .env
|
||||
```
|
||||
Tester la connexion sans mot de passe :
|
||||
|
||||
Variables disponibles :
|
||||
|
||||
- `DISCORD_WEBHOOK_URL` : webhook Discord, optionnel
|
||||
- `DISCORD_PING` : mention en cas d’alerte, optionnel, défaut `@here`
|
||||
- `STORAGE_ALERT_LIMIT` : seuil d’alerte en pourcentage, défaut `70`
|
||||
|
||||
## Utilisation
|
||||
|
||||
```bash
|
||||
ssh -i ~/.ssh/check_storage_key <USER>@<HOST>
|
||||
chmod 700 check-storage.sh
|
||||
./check-storage.sh
|
||||
```
|
||||
## 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
|
||||
```
|
||||
2. Exécutez le script pour vérifier l'espace de stockage :
|
||||
```bash
|
||||
./check-storage.sh
|
||||
```
|
||||
|
||||
## Initialisé un cron pour exécuter le script régulièrement
|
||||
1. Ouvrez le crontab pour l'édition :
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
2. Ajoutez la ligne suivante pour exécuter le script tous les jours à 7h50 du matin :
|
||||
```bash
|
||||
50 7 * * * /chemin/vers/le/script/check-storage.sh
|
||||
```
|
||||
|
||||
## Avertissement
|
||||
Assurez-vous de remplacer `/chemin/vers/le/script/check-storage.sh` par le chemin réel où se trouve le script sur votre système.
|
||||
## Cron
|
||||
|
||||
Exemple quotidien à `07:50` :
|
||||
|
||||
```bash
|
||||
50 7 * * * /chemin/vers/CheckStorage/check-storage.sh
|
||||
```
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
umask 077
|
||||
|
||||
###############################################################################
|
||||
# CHARGEMENT DU .env
|
||||
@@ -22,8 +23,34 @@ set +a
|
||||
# CONFIGURATION
|
||||
###############################################################################
|
||||
|
||||
require_cmd() {
|
||||
command -v "$1" >/dev/null 2>&1 || {
|
||||
echo "ERROR: commande requise absente : $1" >&2
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
# Limite maximale d'utilisation du disque en pourcentage
|
||||
limit=70
|
||||
limit="${STORAGE_ALERT_LIMIT:-70}"
|
||||
DISCORD_PING="${DISCORD_PING:-@here}"
|
||||
|
||||
[[ "$limit" =~ ^[0-9]+$ ]] || {
|
||||
echo "ERROR: STORAGE_ALERT_LIMIT invalide" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
(( limit >= 1 && limit <= 99 )) || {
|
||||
echo "ERROR: STORAGE_ALERT_LIMIT doit être compris entre 1 et 99" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
require_cmd df
|
||||
require_cmd awk
|
||||
|
||||
if [[ -n "${DISCORD_WEBHOOK_URL:-}" ]]; then
|
||||
require_cmd jq
|
||||
require_cmd curl
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# RÉCUPÉRATION DES INFORMATIONS DISQUE
|
||||
@@ -48,15 +75,17 @@ avail_gb=$(awk -v b="$avail_bytes" 'BEGIN {printf "%.2f", b/1024/1024/1024}')
|
||||
|
||||
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="${DISCORD_PING}\n**CHECK STOCKAGE :red_circle:**\nLimite autorisée : ${limit}%\nUtilisation actuelle : ${usage}%\nEspace restant : ${free}%\nUtilisé / total : ${used_gb} GB / ${total_gb} GB\nDisponible : ${avail_gb} GB\nHeure : $(date)"
|
||||
|
||||
payload="$(jq -n --arg content "$msgLimit" '{content: $content}')"
|
||||
if [[ -n "${DISCORD_WEBHOOK_URL:-}" ]]; then
|
||||
payload="$(jq -n --arg content "$msgLimit" '{content: $content}')"
|
||||
|
||||
curl -X POST \
|
||||
-H "Accept: application/json" \
|
||||
-H "Content-Type: application/json; charset=utf-8" \
|
||||
-d "$payload" \
|
||||
"$DISCORD_WEBHOOK_URL"
|
||||
curl -fsS \
|
||||
-H "Accept: application/json" \
|
||||
-H "Content-Type: application/json; charset=utf-8" \
|
||||
-d "$payload" \
|
||||
"$DISCORD_WEBHOOK_URL" >/dev/null || true
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user