Outils pour utilisateurs

Outils du site


clamav

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
clamav [2025/11/11 09:00] – [Scanner son système] cyrilleclamav [2025/11/12 14:26] (Version actuelle) cyrille
Ligne 28: Ligne 28:
  
  
-<code bash | download>+<code | download>
 sudo nano /root/scripts/clamAV/freshclam-auto.sh sudo nano /root/scripts/clamAV/freshclam-auto.sh
 </code> </code>
Ligne 34: Ligne 34:
 Avec le contenu Avec le contenu
  
-<code bash | download>+<code | download>
 #!/bin/bash #!/bin/bash
 # Script : freshclam-auto.sh # Script : freshclam-auto.sh
Ligne 73: Ligne 73:
 On le sauvegarde et on le rend exécutable On le sauvegarde et on le rend exécutable
  
-<code bash | download>+<code  | download>
 sudo chmod +x /root/scripts/clamAV/freshclam-auto.sh sudo chmod +x /root/scripts/clamAV/freshclam-auto.sh
 </code> </code>
Ligne 84: Ligne 84:
  
  
-<code bash | download>+<code  | download>
 [Unit] [Unit]
 Description=Update ClamAV database 10 minutes after boot (only if outdated) Description=Update ClamAV database 10 minutes after boot (only if outdated)
Ligne 104: Ligne 104:
  
 On recharge systemd, on active ce script et le lance : On recharge systemd, on active ce script et le lance :
-<code bash | download>+<code  | download>
 sudo systemctl daemon-reload sudo systemctl daemon-reload
 sudo systemctl enable freshclam.service sudo systemctl enable freshclam.service
Ligne 123: Ligne 123:
  
  
-<code bash | download>+<code  | download>
 /var/log/freshclam-update.log { /var/log/freshclam-update.log {
     weekly     weekly
Ligne 143: Ligne 143:
 Ce qui donnera finalement dans l’arborescence des logs Ce qui donnera finalement dans l’arborescence des logs
  
-<code bash | download>+<code  | download>
 /var/log/freshclam-update.log       # log actuel /var/log/freshclam-update.log       # log actuel
 /var/log/freshclam-update.log.1.gz  # 1 semaine avant /var/log/freshclam-update.log.1.gz  # 1 semaine avant
Ligne 154: Ligne 154:
 Et voici un exemple de leur contenu Et voici un exemple de leur contenu
  
-<code bash | download>+<code  | download>
 /var/log/freshclam-update.log /var/log/freshclam-update.log
 2025-11-13 10:12:00 - Lancement de freshclam... 2025-11-13 10:12:00 - Lancement de freshclam...
Ligne 173: Ligne 173:
  
  
-<code bash | download>+<code  | download>
 #!/bin/bash #!/bin/bash
 # Script pour afficher les dernières mises à jour ClamAV # Script pour afficher les dernières mises à jour ClamAV
Ligne 206: Ligne 206:
 Et on peut le tester  Et on peut le tester 
  
-<code bash | download>+<code  | download>
 sudo /usr/local/bin/freshclam-log.sh sudo /usr/local/bin/freshclam-log.sh
 </code> </code>
Ligne 212: Ligne 212:
 Ce qui donnera une sortie de ce style Ce qui donnera une sortie de ce style
  
-<code bash | download>+<code  | download>
 ===== Dernières mises à jour ClamAV ===== ===== Dernières mises à jour ClamAV =====
 --- Log actuel (freshclam-update.log) --- --- Log actuel (freshclam-update.log) ---
Ligne 263: Ligne 263:
 # Exclusions dynamiques des sous-montages # Exclusions dynamiques des sous-montages
 # Usage : cron toutes les heures # Usage : cron toutes les heures
-# Auteur : version finale durcie par GPT+# Auteur : CB
 # ============================================================ # ============================================================
  
Ligne 313: Ligne 313:
             trap 'rm -f "$FILE_LIST"' EXIT             trap 'rm -f "$FILE_LIST"' EXIT
  
-            # Construction dynamique des exclusions si c'est la racine + # Construction dynamique des exclusions si c'est la racine 
-            if [ "$MOUNT" == "/" ]; then + if [ "$MOUNT" == "/" ]; then 
-                PRUNE_EXPR="" +     # Liste des chemins à exclure pour le scan du système 
-                for DISK in "${!MOUNTS_SCHEDULE[@]}"; do +     EXCLUDES=( 
-                    [ "$DISK" != "/" ] && PRUNE_EXPR="$PRUNE_EXPR -path $DISK -o" +         "/proc" 
-                done +         "/sys" 
-                PRUNE_EXPR=${PRUNE_EXPR% -o} +         "/dev" 
-                find / \( $PRUNE_EXPR \) -prune -o -type f -newermt "$LAST_RUN" -print0 > "$FILE_LIST" +         "/run" 
-            else +         "/var/run" 
-                find "$MOUNT" -type f -newermt "$LAST_RUN" -print0 > "$FILE_LIST" +         "/tmp" 
-            fi+         "/var/tmp" 
 +         "/var/cache" 
 +         "/var/lib/apt/lists" 
 +         "/boot" 
 +         "/usr/share/doc" 
 +         "/usr/share/man" 
 +     ) 
 + 
 +     # Construction dynamique du filtre d'exclusion 
 +     PRUNE_EXPR="" 
 +      
 +     # On exclut d'abord les autres points de montage définis dans MOUNTS_SCHEDULE 
 +     for DISK in "${!MOUNTS_SCHEDULE[@]}"; do 
 +         [ "$DISK" != "/" ] && PRUNE_EXPR="$PRUNE_EXPR -path $DISK -o" 
 +     done 
 + 
 +     # Puis on ajoute les exclusions système 
 +     for EXCL in "${EXCLUDES[@]}"; do 
 +         PRUNE_EXPR="$PRUNE_EXPR -o -path $EXCL" 
 +     done 
 + 
 +     # Supprime le dernier -o éventuel (sinon find râle) 
 +     PRUNE_EXPR=${PRUNE_EXPR% -o} 
 + 
 +     echo "Exclusions actives : $PRUNE_EXPR" >> "$LOGFILE" 
 + 
 +     # Recherche des fichiers modifiés en ignorant les exclusions 
 +     find / \( $PRUNE_EXPR \) -prune -o -type f -newermt "$LAST_RUN" -print0 > "$FILE_LIST" 
 + else 
 +     # Pour les autres montages, on scanne tout 
 +     find "$MOUNT" -type f -newermt "$LAST_RUN" -print0 > "$FILE_LIST" 
 + fi
  
             if [ -s "$FILE_LIST" ]; then             if [ -s "$FILE_LIST" ]; then
Ligne 359: Ligne 390:
     fi     fi
 done done
 +
 +
 +
 +
 </code> </code>
  
Ligne 364: Ligne 399:
 Il va falloir que vous adaptiez cette fonction bash à votre environnement  Il va falloir que vous adaptiez cette fonction bash à votre environnement 
  
-<code bash | download>+<code  | download>
 declare -A MOUNTS_SCHEDULE=( declare -A MOUNTS_SCHEDULE=(
     ["/diskTOTO"]="02"     ["/diskTOTO"]="02"
Ligne 376: Ligne 411:
  
 Pensez également à adapter cette ligne Pensez également à adapter cette ligne
-<code bash | download>+<code  | download>
 MAILTO="admin@example.com"  # <-- Y mettre votre email MAILTO="admin@example.com"  # <-- Y mettre votre email
 </code> </code>
Ligne 386: Ligne 421:
  
  
-<code bash | download>+<code  | download>
 0 * * * * /root/scripts/clamAV/clamscan-timer-inc-lock.sh 0 * * * * /root/scripts/clamAV/clamscan-timer-inc-lock.sh
 </code> </code>
Ligne 397: Ligne 432:
  
  
-<code bash | download>+<code  | download>
 /var/log/clamscan-auto.log { /var/log/clamscan-auto.log {
     weekly     weekly
Ligne 421: Ligne 456:
  
  
-<code bash | download>+<code  | download> 
 +# --- Date de scan ---
 print_clamav_last_run() { print_clamav_last_run() {
     local mount=$1     local mount=$1
-    local base=$(basename "$mount") +    local base 
-    [ -z "$base" ] && base="root"+    if [ "$mount" = "/" ]; then 
 +        base="_" 
 +    else 
 +        base=$(basename "$mount"
 +    fi
     local ts_file="/var/log/clamscan-last-${base}.timestamp"     local ts_file="/var/log/clamscan-last-${base}.timestamp"
     local color=$GREEN     local color=$GREEN
Ligne 435: Ligne 475:
         local now_epoch=$(date +%s)         local now_epoch=$(date +%s)
         local age_hours=$(( (now_epoch - last_epoch) / 3600 ))         local age_hours=$(( (now_epoch - last_epoch) / 3600 ))
 +
         if [ "$age_hours" -le 24 ]; then         if [ "$age_hours" -le 24 ]; then
             color=$GREEN             color=$GREEN
Ligne 446: Ligne 487:
     fi     fi
  
-    # Alignement à 19 caractères pour la date +    # Affichage : "root" explicite pour / 
-    printf "   ClamAV last scan on %-12s : ${color}%-19s${RESET}\n" "$mount" "$last_run"+    local label="$mount" 
 +    [ "$mount" = "/" ] && label="/ (root)" 
 + 
 +    # Alignement propre sur 12 + 19 caractères 
 +    printf "   ClamAV last scan on %-12s : ${color}%-19s${RESET}\n" "$label" "$last_run"
 } }
 +
 </code> </code>
  
 Et pour insérer les entrées, ajouter les lignes suivantes à votre dashboard Et pour insérer les entrées, ajouter les lignes suivantes à votre dashboard
  
-<code bash | download>+<code  | download>
 echo "💽 Disques :" echo "💽 Disques :"
 MOUNTS=("/diskTOTO" "/diskTITI" "/diskTATA" "/") MOUNTS=("/diskTOTO" "/diskTITI" "/diskTATA" "/")
clamav.1762851652.txt.gz · Dernière modification : de cyrille