diff --git a/servers/linux/config_adminSys.sh b/servers/linux/config_adminSys.sh index 554ac76..cdfe8a6 100755 --- a/servers/linux/config_adminSys.sh +++ b/servers/linux/config_adminSys.sh @@ -90,4 +90,6 @@ systemctl restart fail2ban # --- 9. RAPPORT FINAL --- echo "Déploiement terminé de ${0} sur ${HOSTNAME}" | mail -s "Setup OK" "$DEST_EMAIL" -echo "✅ Terminé ! Teste avec : echo 'test' | mail -s 'Sujet simple' root" \ No newline at end of file +echo "✅ Terminé ! Teste avec : echo 'test' | mail -s 'Sujet simple' root" + +rm ${0} diff --git a/servers/linux/sys_check.sh b/servers/linux/sys_check.sh new file mode 100644 index 0000000..e63c1a8 --- /dev/null +++ b/servers/linux/sys_check.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# --- CONFIGURATION --- +THRESHOLD=90 +LOAD_THRESHOLD=5.0 # Alerte si la charge moyenne sur 1 min dépasse 5 + +# On envoie à 'root', le système fera la redirection grâce aux aliases +DEST="root" + +HOST=$(hostname) + +# --- INITIALISATION DU RAPPORT --- +REPORT="" +ALERT=false + +# 1. CHECK DISQUE (OCTETS)# On envoie à 'root', le système fera la redirection grâce aux aliases +DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') +if [ "$DISK_USAGE" -gt "$THRESHOLD" ]; then + REPORT="${REPORT}⚠️ DISQUE : $DISK_USAGE% utilisé\n" + ALERT=true +fi + +# 2. CHECK INODES (Nombre de fichiers) +# Crucial : un disque peut être vide en Go mais plein en inodes (trop de petits fichiers) +INODE_USAGE=$(df -i / | awk 'NR==2 {print $5}' | sed 's/%//') +if [ "$INODE_USAGE" -gt "$THRESHOLD" ]; then + REPORT="${REPORT}⚠️ INODES : $INODE_USAGE% utilisé (Trop de fichiers !)\n" + ALERT=true +fi + +# 3. CHECK RAM +RAM_USAGE=$(free | grep Mem | awk '{print int($3/$2 * 100)}') +if [ "$RAM_USAGE" -gt "$THRESHOLD" ]; then + REPORT="${REPORT}⚠️ RAM : $RAM_USAGE% utilisé\n" + ALERT=true +fi + +# 4. CHECK SWAP +# Si le swap est utilisé à plus de 50%, le serveur commence à ramer sévèrement +SWAP_TOTAL=$(free | grep Swap | awk '{print $2}') +if [ "$SWAP_TOTAL" -gt 0 ]; then + SWAP_USAGE=$(free | grep Swap | awk '{print int($3/$2 * 100)}') + if [ "$SWAP_USAGE" -gt 50 ]; then + REPORT="${REPORT}⚠️ SWAP : $SWAP_USAGE% utilisé (Saturation RAM imminente)\n" + ALERT=true + fi +fi + +# 5. CHECK CHARGE CPU (Load Average) +CPU_LOAD=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d',' -f1 | xargs) +if (( $(echo "$CPU_LOAD > $LOAD_THRESHOLD" | bc -l) )); then + REPORT="${REPORT}🔥 CPU LOAD : $CPU_LOAD (Serveur surchargé)\n" + ALERT=true +fi + +# 6. CHECK SERVICES CRITIQUES (Exemple : Fail2Ban et Docker) +SERVICES=("fail2ban" "ssh" "docker") +for SVC in "${SERVICES[@]}"; do + if ! systemctl is-active --quiet "$SVC"; then + REPORT="${REPORT}❌ SERVICE : $SVC est ARRÊTÉ\n" + ALERT=true + fi +done + +# --- ENVOI DE L'ALERTE --- +if [ "$ALERT" = true ]; then + # On ajoute un récapitulatif rapide à la fin + FULL_BODY="Détails de l'alerte pour $HOST :\n\n$REPORT\n---\nDate: $(date)" + + # Grâce à ton wrapper msmtp, le sujet sera préfixé automatiquement par [$HOSTNAME] + echo -e "$FULL_BODY" | mail -s "ALERTE RESSOURCES" "$DEST_EMAIL" +fi \ No newline at end of file