2018-01-02 23:52:31 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Script d'initialisation de la base de donnée. Crée le fichier s'il n'existe
|
2018-01-03 14:17:27 +01:00
|
|
|
# pas, crée la base de donnée, puis la remplie avec les premières images.
|
2018-01-02 23:52:31 +01:00
|
|
|
|
2018-01-03 14:17:27 +01:00
|
|
|
# Vérifie que la base n'existe pas déjà
|
2018-01-14 17:11:38 +01:00
|
|
|
if [ -f $DATABASE ]
|
2018-01-02 23:52:31 +01:00
|
|
|
then
|
2018-01-03 14:17:27 +01:00
|
|
|
echo "Le fichier existe déjà." >&2
|
2018-01-02 23:52:31 +01:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2018-01-03 14:17:27 +01:00
|
|
|
|
|
|
|
# Création de la base de données
|
|
|
|
echo "Création de la base de données"
|
2018-01-02 23:52:31 +01:00
|
|
|
|
2018-01-03 14:17:27 +01:00
|
|
|
# Le flag e interdit les erreurs. Si une commande échoue après celle-ci, le
|
|
|
|
# script s'arrête.
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# On lance les commandes sqlite
|
2018-01-14 17:11:38 +01:00
|
|
|
sqlite3 $DATABASE \
|
2018-01-03 19:30:10 +01:00
|
|
|
"CREATE TABLE fichier(chemin TEXT PRIMARY KEY, checksum INTEGER, taille
|
|
|
|
INTEGER);"
|
2018-01-14 17:11:38 +01:00
|
|
|
sqlite3 $DATABASE "CREATE TABLE controle(
|
2018-01-02 23:52:31 +01:00
|
|
|
chemin TEXT,
|
|
|
|
date INTEGER,
|
2018-01-03 19:06:01 +01:00
|
|
|
checksum INTEGER,
|
2018-01-07 10:32:42 +01:00
|
|
|
taille INTEGER,
|
2018-01-02 23:52:31 +01:00
|
|
|
status TEXT,
|
|
|
|
FOREIGN KEY(chemin) REFERENCES fichier(chemin),
|
|
|
|
PRIMARY KEY(chemin,date)
|
2018-01-03 14:17:27 +01:00
|
|
|
);"
|
|
|
|
|
|
|
|
# Autorise à nouveau les erreurs, find pouvant renvoyer un code d'erreur 1 en
|
|
|
|
# cas de problème de droits (notamment sur les fichiers spéciaux)
|
|
|
|
set +e
|
|
|
|
|
2018-01-03 19:06:01 +01:00
|
|
|
# On récupère la liste de tous les fichiers ayant le bit SUID
|
2018-01-03 14:17:27 +01:00
|
|
|
echo "Récupération des fichiers ayant le bit SUID"
|
2018-01-07 10:57:28 +01:00
|
|
|
fichiers=$(find / -perm -4000 2> /dev/null)
|
2018-01-03 14:17:27 +01:00
|
|
|
|
2018-01-03 19:06:01 +01:00
|
|
|
# Pour chaque fichier de la liste
|
|
|
|
echo "Insertion des images de départ dans la base de données"
|
2018-01-07 10:57:28 +01:00
|
|
|
for f in $fichiers
|
2018-01-03 19:06:01 +01:00
|
|
|
do
|
|
|
|
# On récupère son checksum
|
|
|
|
checksum=$(cksum $f | cut -d' ' -f 1)
|
2018-01-03 19:30:10 +01:00
|
|
|
taille=$(cksum $f | cut -d' ' -f 2)
|
2018-01-03 19:06:01 +01:00
|
|
|
|
|
|
|
# Et on insère le couple chemin, checksum dans la base
|
2018-01-14 17:11:38 +01:00
|
|
|
sqlite3 $DATABASE "INSERT INTO fichier VALUES('$f', $checksum,
|
2018-01-03 19:30:10 +01:00
|
|
|
$taille);"
|
2018-01-03 19:06:01 +01:00
|
|
|
done
|
|
|
|
|