suidchecker/check.sh

52 lines
1.5 KiB
Bash
Raw Normal View History

2018-01-07 10:32:42 +01:00
#!/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
2018-01-14 14:18:46 +01:00
# Défini la date de vérification, au format epoch
2018-01-07 10:32:42 +01:00
DATE=$(date +%s)
2018-01-14 14:18:46 +01:00
# Défini la date de vérification à utiliser dans les logs
2018-01-07 10:32:42 +01:00
FULL_DATE=$(date -d "@$DATE" "+%Y-%m-%d %H:%M:%S")
2018-01-14 14:18:46 +01:00
# Pour chaque fichier de la table fichier
2018-01-14 17:11:38 +01:00
for c in $(sqlite3 $DATABASE "SELECT chemin FROM fichier;")
2018-01-07 10:32:42 +01:00
do
2018-01-14 14:18:46 +01:00
# Si le fichier existe encore
2018-01-07 10:32:42 +01:00
if [ -f $c ]
then
2018-01-14 14:18:46 +01:00
# Récupère son checksum et sa taille
2018-01-07 10:32:42 +01:00
checksum=$(cksum $c | cut -d' ' -f1)
taille=$(cksum $c | cut -d' ' -f2)
2018-01-14 14:18:46 +01:00
# Récupère les valeurs d'origine pour comparer
2018-01-14 17:11:38 +01:00
old_checksum=$(sqlite3 $DATABASE "SELECT checksum FROM
2018-01-07 10:32:42 +01:00
fichier WHERE chemin='$c';")
2018-01-14 17:11:38 +01:00
old_taille=$(sqlite3 $DATABASE "SELECT taille FROM fichier
2018-01-07 10:32:42 +01:00
WHERE chemin='$c';")
2018-01-14 14:18:46 +01:00
# Si la taille et le checksum sont inchangés, le status est
# mis à identique, sinon à modifié
2018-01-07 10:32:42 +01:00
if [ $checksum -eq $old_checksum -a $taille -eq $old_taille ]
then
status="identique"
else
status="modifié"
fi
2018-01-14 14:18:46 +01:00
# On insère les informations dans la base
2018-01-14 17:11:38 +01:00
sqlite3 $DATABASE "INSERT INTO controle VALUES(
2018-01-07 10:32:42 +01:00
'$c','$DATE','$checksum','$taille','$status');"
else
2018-01-14 14:18:46 +01:00
# Quand le fichier n'existe pas, on indique qu'il est supprimé
2018-01-07 10:32:42 +01:00
status="supprimé"
2018-01-14 17:11:38 +01:00
sqlite3 $DATABASE "INSERT INTO
2018-01-07 10:32:42 +01:00
controle(chemin,date,status) VALUES('$c',
'$DATE','$status');"
fi
2018-01-14 14:18:46 +01:00
# Affichage des logs sur la sortie standard
echo "$FULL_DATE $c $status"
2018-01-07 10:32:42 +01:00
done