Une façon plus simple de comparer la somme de contrôle md5?

11

Après avoir téléchargé un fichier qui a une somme de contrôle md5 disponible, je le vérifie actuellement avec

md5 *file* | grep *given_checksum*

par exemple

md5 file.zip | grep -i B4460802B5853B7BB257FBF071EE4AE2

mais il me semblait drôle d'exiger grep et la pipe pour ce qui est sûrement une tâche très courante. Adepte de faire les choses efficacement, je me suis demandé s'il y avait une meilleure façon de le faire?

Ben Griffiths
la source
Quel genre d'outil est-ce md5? De quel colis vient-il?
manatwork
Je ne savais pas que c'était différent jusqu'à ce que je pose cette question et commence à chercher les réponses, mais j'utilise bash sur OS X et c'est le propre outil d'Apple qui n'a pas l'option -c. Apparemment, ils ont arrêté de regrouper md5sum en 10.5 ... J'ai maintenant installé l'outil unix md5sum d'origine.
Ben Griffiths

Réponses:

20

md5suma une -coption pour vérifier un ensemble existant de sommes, et son état de sortie indique la réussite / l'échec.

Exemple:

$ echo "ff9f75d4e7bda792fca1f30fc03a5303  package.deb" | md5sum -c -
package.deb: OK

Trouvez une belle ressource ici

psusi
la source
4
Merci. Juste pour terminer, j'utilise maintenant md5sum -c - <<<"b4460802b5853b7bb257fbf071ee4ae2 file_name.ext"ce qui semble plus propre que d'impliquer grep!
Ben Griffiths
hmm, pas beaucoup d'amélioration par rapport au fichier original $ md5 | grep given_checksum et si vous voulez utiliser une chaîne insensible à la casse, vous devez vous en tenir à grep -i
StandardNerd
J'obtenais no properly formatted MD5 checksum lines foundquand j'utilisais md5sum -c <file.md5> <file>mais cette commande a fonctionné pour moi.
Vishrant
1

La manière habituelle de bash serait:

shopt -s nocasematch
if [[ $(md5sum "$file") = 5d40f31729c992b5a0e67490689fe8ff* ]]
Hauke ​​Laging
la source
1
md5sum -c <filename>.zip.md5 <filename>.zip

Cela vous dira Ok si ce sont les mêmes.

Cela fonctionne également avec le goudron.

Anthony Petrillo
la source
0

Inspiré par la réponse de psusi

echo "$(cut -f1 -d' ' your_file.jar.md5) your_file.jar" | md5sum -c -

J'ai utilisé cutcar tous ne md5sont pas stockés de la même manière. Exemple

Vishrant
la source