Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 de

    gsub("[[: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,
26818454.jpg


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 big_smile

Moi en général c'est :


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne