#!/bin/bash # Script de vérification. Récupère la liste des fichiers répertoriés, et # vérifie leur état, en fonction de leur taille et leur somme de contrôle # Défini la date de vérification, au format epoch DATE=$(date +%s) # Défini la date de vérification à utiliser dans les logs FULL_DATE=$(date -d "@$DATE" "+%Y-%m-%d %H:%M:%S") # Pour chaque fichier de la table fichier for c in $(sqlite3 $DATABASE "SELECT chemin FROM fichier;") do # Si le fichier existe encore if [ -f $c ] then # Récupère son checksum et sa taille checksum=$(cksum $c | cut -d' ' -f1) taille=$(cksum $c | cut -d' ' -f2) # Récupère les valeurs d'origine pour comparer old_checksum=$(sqlite3 $DATABASE "SELECT checksum FROM fichier WHERE chemin='$c';") old_taille=$(sqlite3 $DATABASE "SELECT taille FROM fichier WHERE chemin='$c';") # Si la taille et le checksum sont inchangés, le status est # mis à identique, sinon à modifié if [ $checksum -eq $old_checksum -a $taille -eq $old_taille ] then status="identique" else status="modifié" fi # On insère les informations dans la base sqlite3 $DATABASE "INSERT INTO controle VALUES( '$c','$DATE','$checksum','$taille','$status');" else # Quand le fichier n'existe pas, on indique qu'il est supprimé status="supprimé" sqlite3 $DATABASE "INSERT INTO controle(chemin,date,status) VALUES('$c', '$DATE','$status');" fi # Affichage des logs sur la sortie standard echo "$FULL_DATE $c $status" done