Pages : 1
#1 Le 16/09/2012, à 02:53
- villegente
Script comparaison SHA256
Bonjour,
J'ai le script ci-dessous qui calcul le SHA256 des fichiers PDF présents dans un dossier et le compare à celui contenu dans un fichier CSV (ce fichier contient entre autre le nom du fichier ainsi que son SHA256).
Je ne comprends pas pourquoi systématiquement le script me retourne que le SHA256 n'est pas identique alors que si. De plus, le fichier semble lu correctement. Pouvez-vous m'aider à trouver se qui ne va pas dans mon script.
Mon script :
#!/bin/bash
BASEDIR=/Olivier/test
# Contrôle des SUM SHA256 des fichiers PDF d'après le CSV
for fichierPDF in $(ls $BASEDIR/en_traitement/*.pdf)
do
pdffilename=`basename $fichierPDF`
pdffilesha256=`sha256sum $fichierPDF | head -c 64 | tr [a-z] [A-Z]`
# Recherche et comparaison du SHA du PDF encour par rapport au fichier CSV
SHA256CSV=`awk -F";" -v pdffilename=$pdffilename '
$1 == pdffilename {
print $13
found = 1
}
END{ if ( ! found ) print "PAS TROUVE"}' $BASEDIR/en_traitement/index.csv`
if [ "$SHA256CSV" = "$pdffilesha256" ]
then
echo 'C COOL ON PEUT Y ALLER'
else
echo 'PAS BON PROBLEME AVEC AU MOINS UN SHA256'
echo $pdffilename
echo $pdffilesha256
echo $SHA256CSV
fi
done
Exemple de contenu du fichier avec lequel le SHA256 est comparé :
FLX-SIC_20120902_STK_00002_00001_00001.pdf;A;B;C;D;E;F;G;H;I;;;00881C33C7524A2FBB2EC08925CA3CDDBE359ADE3E48DB75E60AD3CD24C6F20A
FLX-SIC_20120902_STK_00002_00001_00002.pdf;W;C;S;;K;Q;F;;P;;;676112D9F5AFC9F17E9118FA218928F9505DBDF350AFCB9B7B4EC4149AE54A1B
Résultat que le script me retourne actuellement :
root@node:/Olivier/test/Scripts# sh ScriptX.sh
PAS BON PROBLEME AVEC AU MOINS UN SHA256
FLX-SIC_20120902_STK_00002_00001_00001.pdf
00881C33C7524A2FBB2EC08925CA3CDDBE359ADE3E48DB75E60AD3CD24C6F20A
00881C33C7524A2FBB2EC08925CA3CDDBE359ADE3E48DB75E60AD3CD24C6F20A
PAS BON PROBLEME AVEC AU MOINS UN SHA256
FLX-SIC_20120902_STK_00002_00001_00002.pdf
676112D9F5AFC9F17E9118FA218928F9505DBDF350AFCB9B7B4EC4149AE54A1B
676112D9F5AFC9F17E9118FA218928F9505DBDF350AFCB9B7B4EC4149AE54A1B
Merci,
Hors ligne
#2 Le 16/09/2012, à 05:50
- pingouinux
Re : Script comparaison SHA256
Bonjour villegente,
N'y a-t-il pas des espaces en fin de ligne dans le fichier index.csv ?
Ajouté : ou bien c'est un fichier qui vient de windows (\r\n en fin de ligne)
Si c'est le cas, faire précéder le print $13 degsub("[[:space:]\r]","",$13)
D'autre part, avec cette commande
tr [a-z] [A-Z]
si le répertoire d'où tu lances le script contient des fichiers dont le nom n'a qu'un seul caractère, par exemple x y, la commande deviendra après expansion
tr x y x y
Il vaut mieux faire ceci
tr "a-z" "A-Z"
ou
tr "[:lower:]" "[:upper:]"
Dernière modification par pingouinux (Le 16/09/2012, à 07:52)
Hors ligne
#3 Le 16/09/2012, à 13:27
- Tycho Brahe
Re : Script comparaison SHA256
Salut,
Juste une grosse remarque à propos de ceci :
for fichierPDF in $(ls $BASEDIR/en_traitement/*.pdf)
Utiliser ls dans une boucle est fortement déconseillé et peut générer à des erreurs. Je te recommande fortement la lecture du tout premier point de l'article Bash Pitfalls.
Juste un petit exemple rapide pour t'illustrer comment on peut avoir des problèmes avec :
-> cat test.sh
#!/bin/sh
echo ' * With ls:'
for file in $(ls test/*); do
echo $file
done
echo ' * Without ls:'
for file in test/*; do
echo $file
done
-> sh test.sh
* With ls:
test/hu
ho
test/toto
titi
tutu
* Without ls:
test/hu ho
test/toto titi tutu
Bref,
Loi de Newton :
Si tu restes à glander sous le pommier, tu pourrais bien prendre une pomme sur la gueule.
Hors ligne
#4 Le 20/09/2012, à 00:51
- sputnick
Re : Script comparaison SHA256
LAULE, enfin quelqu'un qui a le même humour que moi ici
Moi en général c'est :
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
Pages : 1