diff --git a/servers/linux/config_adminSys.sh b/servers/linux/config_adminSys.sh index d71d321..f6883b5 100755 --- a/servers/linux/config_adminSys.sh +++ b/servers/linux/config_adminSys.sh @@ -211,7 +211,7 @@ fi ufw allow 22/tcp ufw --force enable systemctl restart fail2ban -(crontab -l 2>/dev/null | grep -v "sys_check.sh" ; echo "0 * * * * /usr/local/bin/sys_check.sh") | crontab - +(crontab -l 2>/dev/null | grep -v "sys_check.sh" ; echo "04 * * * * /usr/local/bin/sys_check.sh") | crontab - # --- 9. RAPPORT FINAL --- diff --git a/servers/linux/sys_check.sh b/servers/linux/sys_check.sh index ed5047f..1ab86f4 100644 --- a/servers/linux/sys_check.sh +++ b/servers/linux/sys_check.sh @@ -102,21 +102,25 @@ if [ "$ZOMBIES" -gt 0 ]; then fi # ------------------------------------------------ -# 8. FICHIERS SUPPRIMÉS MAIS OUVERTS +# 8. FICHIERS SUPPRIMÉS MAIS OUVERTS (Filtré) # ------------------------------------------------ -# On utilise tail -n +2 pour ignorer la ligne d'en-tête de lsof -DELETED_DATA=$(sudo lsof +L1 2>/dev/null | tail -n +2) -DELETED_COUNT=$(echo -n "$DELETED_DATA" | grep -c '^' || echo 0) +# On récupère les données, puis on exclut les processus du script lui-même +# On exclut aussi souvent 'systemd-j' (journal) car il gère ses propres rotations +DELETED_DATA=$(sudo lsof +L1 2>/dev/null | tail -n +2 | grep -Ev "lsof|tail|cron|sh|systemd-j|sys_check") -if [ "$DELETED_COUNT" -gt 0 ]; then - # On extrait les noms des commandes uniques pour le rapport (ex: systemd-j, apache2) - PROCESS_NAMES=$(echo "$DELETED_DATA" | awk '{print $1}' | sort -u | tr '\n' ' ') +# On compte proprement les lignes +DELETED_COUNT=$(echo "$DELETED_DATA" | grep -v '^$' | wc -l) + +if (( DELETED_COUNT > 0 )); then + # On extrait les noms des commandes uniques pour le rapport + PROCESS_NAMES=$(echo "$DELETED_DATA" | awk '{print $1}' | sort -u | xargs) add_to_report "📂 FICHIERS SUPPRIMÉS MAIS OUVERTS : $DELETED_COUNT (Processus : $PROCESS_NAMES)" ALERT=true fi + # ------------------------------------------------ # 9. CONNEXIONS RÉSEAU # ------------------------------------------------ @@ -127,16 +131,23 @@ if [ "$CONN_COUNT" -gt "$CONN_THRESHOLD" ]; then ALERT=true fi -# ------------------------------------------------ -# 10. ERREURS RÉCENTES DANS LES LOGS -# ------------------------------------------------ -LOG_ERRORS=$(journalctl -p 3 -n 20 --no-pager | wc -l) -if [ "$LOG_ERRORS" -gt 0 ]; then - add_to_report "ERREURS CRITIQUES DANS LES LOGS : $LOG_ERRORS\n" +# ------------------------------------------------ +# 10. ERREURS CRITIQUES (Dernière heure) +# ------------------------------------------------ +# On filtre par priorité 3 (Error) ou moins, depuis 1 heure +LOG_CONTENT=$(journalctl -p 3 --since "1 hour ago" --no-pager --quiet) + +# On compte le nombre de lignes réelles +LOG_COUNT=$(echo "$LOG_CONTENT" | grep -v '^--' | grep -v '^$' | wc -l) + +if (( LOG_COUNT > 0 )); then + add_to_report "📑 ERREURS CRITIQUES (Dernière heure : $LOG_COUNT) :" + add_to_report "$(echo "$LOG_CONTENT" | tail -n 15 | sed 's/^/ /')" ALERT=true fi + # ------------------------------------------------ # ENVOI MAIL # ------------------------------------------------