Sur Ubuntu 14.04, sha256sum
de coreutils
fonctionne comme prévu:
echo 879dd0d7637876be4796f7e6f194a111d21088be85cfe717fc97e2e7f05e79d2 /tmp/myfile | sha256sum -c /tmp/myfile: OK
Cependant, la même command avec le même file sur Debian Wheezy échoue:
sha256sum: standard input: no properly formatted SHA256 checksum lines found
Je ne comprends pas ça. Comment puis-je vérifier la sum de contrôle de manière fiable dans un script shell sur Debian?
Sur Ubuntu 14.04:
⟫ sha256sum --version sha256sum (GNU coreutils) 8.21
Sur Wheezy:
$ sha256sum --version sha256sum (GNU coreutils) 8.13
les pages de manuel sur les deux systèmes d'exploitation disent:
SYNOPSIS sha256sum [OPTION]... [FILE]... DESCRIPTION Print or check SHA256 (256-bit) checksums. With no FILE, or when FILE is -, read standard input. [...] -c, --check read SHA256 sums from the FILEs and check them
Il se soucie de l'espacement. Si vous exécutez:
sha256sum /dev/null
vous obtenez
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null
(deux espaces). Lorsque vous utilisez l' echo
comme ça, il n'y a qu'un seul espace entre les mots.
La version 8.13 veut le format exact de sa sortie. Si vous utilisez:
echo "$SUM $FILE" | sha256sum -c
(encore une fois, deux espaces) ça devrait marcher. Les versions plus récentes ne se soucient pas du nombre d'espaces, donc cela fonctionnera aussi avec eux.