¿Una forma más simple de comparar la suma de comprobación md5?

11

Después de descargar un archivo que tiene una suma de verificación md5 disponible, actualmente lo verifico con

md5 *file* | grep *given_checksum*

p.ej

md5 file.zip | grep -i B4460802B5853B7BB257FBF071EE4AE2

pero me pareció divertido requerir grep y la tubería para lo que seguramente es una tarea muy común. Un fanático de hacer las cosas de manera eficiente, me preguntaba si hay una mejor manera de hacerlo.

Ben Griffiths
fuente
¿Qué tipo de herramienta es esa md5? ¿De qué paquete viene?
manatwork 05 de
No me di cuenta de que era diferente hasta que realmente hice esta pregunta y comencé a buscar las respuestas, pero estoy usando bash en OS X y es la propia herramienta de Apple que no tiene la opción -c. Aparentemente, dejaron de agrupar md5sum en 10.5 ... Ahora he instalado la herramienta original unix md5sum.
Ben Griffiths

Respuestas:

20

md5sumtiene una -copción para verificar un conjunto existente de sumas, y su estado de salida indica éxito / falla.

Ejemplo:

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

Encuentra un buen recurso aquí

psusi
fuente
44
Gracias. Solo para completar, ahora uso lo md5sum -c - <<<"b4460802b5853b7bb257fbf071ee4ae2 file_name.ext"que parece más limpio que involucrar grep.
Ben Griffiths
hmm, no mucha mejora al archivo original $ md5 | grep given_checksum y si desea utilizar una cadena que no distinga entre mayúsculas y minúsculas, debe seguir con grep -i
StandardNerd el
Estaba obteniendo no properly formatted MD5 checksum lines foundcuando estaba usando, md5sum -c <file.md5> <file>pero este comando funcionó para mí.
Vishrant
1

La forma habitual de golpe sería:

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

Esto te dirá Ok si son lo mismo.

Esto también funciona con alquitrán.

Anthony Petrillo
fuente
0

Inspirado por la respuesta de psusi

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

Usé cutque no todos md5se almacenan de la misma manera. Ejemplo

Vishrant
fuente