# script pour checksum



## ketsueki (30 Novembre 2008)

Salut, 

je voudrais utiliser le script ci-dessous proposé par le site de jacksum (application en java utilisable via le terminal pour effectuer des checksums) afin d'effectuer des checkums sur plusieurs fichiers de manière rapide.

Voici leur exemple pour mac (pour les autres systèmes, ils donnent un truc tout fait) :


```
tell application "Finder" 
    set theseItemsto the selection 
end tell 
set allFiles to "" 
repeat with i from 1 to the count of theseItems 
    set thisItemto(item i oftheseItems) as alias 
    set thisFileto POSIX path of thisItem 
    set allFilestoallFiles & " " & thisFile 
end repeat 
set theCommandto "jacksum -a sha256 " & allFiles & " > /tmp/jacksum.txt" 
do shell script theCommand 
property targetURL : "file:///tmp/jacksum.txt" 
open location targetURL
```
Ayant fait un peu de programmation je comprend ce que fait ce script (j'avoue quand même que l'on peut aisément comprendre ce qu'il fait même sans en avoir fait...). Je suis même pas obligé d'utiliser jacksum car je pourrais très bien mettre : crc32 ou autre à la place de "jacksum -a sha256, mais à la limite le problème n'est pas là.

Mais le problème c'est que l'éditeur de script applescript me signal des problèmes, et n'y conaissant rien en applescript, j'aurai voulu savoir si quelqu'un était apte à corriger les potentielles erreurs de cette portion de code.

Merci !


----------



## ceslinstinct (3 Décembre 2008)

ketsueki a dit:


> Salut,
> 
> je voudrais utiliser le script ci-dessous proposé par le site de jacksum (application en java utilisable via le terminal pour effectuer des checksums) afin d'effectuer des checkums sur plusieurs fichiers de manière rapide.
> 
> ...


Bonjour


```
tell application "Finder"
	set theseItems to the selection
end tell
set allFiles to ""
repeat with i from 1 to the count of theseItems
	set thisItem to (item i of theseItems) as alias
	set thisFile to POSIX path of thisItem
	set allFiles to allFiles & " " & thisFile
end repeat
set theCommand to "jacksum -a sha256 " & allFiles & " > /tmp/jacksum.txt"
do shell script theCommand
property targetURL : "file:///tmp/jacksum.txt"
open location targetURL
```

Les *to* et *of* ne sont pas séparés des variables, donc teste ce code.

Personnellement, j'utilise un AppleScript qui me permet de choisir l'empreinte numérique au choix: 
"sha ", "sha1 ", "md2 ", "md5 ", "mdc2 ", "rmd160 "

Mais pas la tienne en sha256.

@+


----------



## zacromatafalgar (3 Décembre 2008)

Salut,

Chez moi, j'ai une erreur sur la localisation de jacksum, il faut mettre le chemin complet de la commande.


----------



## ceslinstinct (3 Décembre 2008)

zacromatafalgar a dit:


> Salut,
> 
> Chez moi, j'ai une erreur sur la localisation de jacksum, il faut mettre le chemin complet de la commande.


Bonsoir

C'est un fichier texte qui existe déjà ou qu'il faut ajouter?

@+


----------



## zacromatafalgar (3 Décembre 2008)

ceslinstinct a dit:


> Bonsoir
> 
> C'est un fichier texte qui existe déjà ou qu'il faut ajouter?
> 
> @+



Le fichier _jacksum.txt_ est créé dans le dossier masqué _tmp_ à la racine du disque, après exécution du script


----------



## ceslinstinct (3 Décembre 2008)

zacromatafalgar a dit:


> Le fichier _jacksum.txt_ est créé dans le dossier masqué _tmp_ à la racine du disque, après exécution du script&#8230;


La nuit commence a tomber (chez moi coté ouest GMT) alors tu m'éclaire pour pas que je fasse comme elle. 

Merci


----------



## ketsueki (4 Décembre 2008)

Merci ceslinstinct mais tu sais je n'ai jamais dis que je voulait utiliser le sha256. J'ai juste collé juste l'exemple donné sur le site. Je peux très bien utiliser md5 ou crc32...

Pour la localisation de jacksum c'est normal, non seulement il faut l'avoir téléchargé mais en plus jacksum tout court est considéré comme "variable globale" si je ne m'abuse (une commande reconnue depuis n'importe quel répertoire dans le terminal. Il faut faire préalablement quelque chose, sinon il faut le chemin relatif vers le *.jar

Merci, je vais tester ceci !

EDIT : par contre, je suis dans l'éditeur de script, mais je sais pas comment ajouter ces lignes au systèmes (pour l'avoir dans le menu du click droit lors de la sélection du ou des fichiers). J'ai testé compiler mais...


----------



## zacromatafalgar (4 Décembre 2008)

ketsueki a dit:


> EDIT : par contre, je suis dans l'éditeur de script, mais je sais pas comment ajouter ces lignes au systèmes (pour l'avoir dans le menu du click droit lors de la sélection du ou des fichiers). J'ai testé compiler mais...



Il faudrait utiliser Automator qui lui permet de rajouter des éléments au menu contextuel mais, ne l'utilisant pas, je ne pourrais t'en dire plus à son sujet.

Tu peux aussi enregistrer ton script au format progiciel puis glisser celui-ci dans la barre d'outils des fenêtres ainsi il sera facilement accessible.


----------



## ketsueki (4 Décembre 2008)

Oui merci mais seul il ne fait rien, je dois absolument sélectionner des fichiers au préalable, donc je dois l'ajouter au menu contextuel.

ce genre là :






Automator ? ok merci, je vais tester.


----------



## zacromatafalgar (5 Décembre 2008)

ketsueki a dit:


> Oui merci mais seul il ne fait rien, je dois absolument sélectionner des fichiers au préalable, donc je dois l'ajouter au menu contextuel.



Il est tout à fait possible de sélectionner les fichiers avant de cliquer sur l'applet de la barre d'outils




Click for full size - Uploaded with plasq's Skitch


----------



## ketsueki (6 Décembre 2008)

Ok, merci bien, je testerai ainsi.

Désolé ca ne fait pas si longtemps que j'ai switché sous mac 

Merci encore.

EDIT :

voilà, je l'ai ajouté dans la "barre système", je sélectionne un fichier dont je connais déjà son crc (écrit dans le nom de fichier) et j'exécute tout simplement 

Bref ça marche nickel, je l'ai enregistré en application pour éviter d'utiliser l'éditeur pour l'exécuter à chaque fois.

Grand merci !, je peux enfin utiliser le crc32 massivement


----------



## ketsueki (11 Décembre 2008)

Désolé du double post :

pour certains fichiers (dont les gros) le checksum à l'air de s'effectuer mais le résultat ne s'affiche pas dans le fichier texte.

Comme si la tâche continuait en arrière plan et que le txt était pas mis à jour par la suite (rien n'est programmé pour ça dans le script).

Je dirais même qu'il affiche le résultat avant même que la tâche soit terminée (exemple, une bonne trentaine de fichiers de plus de 100 mo l'un).

Je lance donc dans le terminal (dans le répertoire qui m'intéresse...) : "crc32 *.*"

Et je vois bien que ça met un certains temps pour des grosses listes de fichiers qui sont "lourds" (normal hein).


Donc, quelqu'un saurait-il comment :

- ou effectuer une condition qui vérifierait que tous les checksums sont terminés

- ou mieux je pense, afficher le résultat de la tâche en temps réel, dans une fenêtre de terminal.


Merci !


----------

