Uma maneira mais simples de comparar a soma de verificação MD5?

11

Depois de baixar um arquivo que possui uma soma de verificação md5 disponível, atualmente eu o verifico

md5 *file* | grep *given_checksum*

por exemplo

md5 file.zip | grep -i B4460802B5853B7BB257FBF071EE4AE2

mas me pareceu engraçado exigir grep e pipe para o que certamente é uma tarefa muito comum. Um defensor de fazer as coisas com eficiência, eu me perguntava que há uma maneira melhor de fazer isso?

Ben Griffiths
fonte
Que tipo de ferramenta é essa md5? De qual pacote ele vem?
manatwork
Eu não percebi que era diferente até que eu realmente fiz essa pergunta e comecei a procurar as respostas, mas estou usando o bash no OS X e é a própria ferramenta da Apple que não tem a opção -c. Aparentemente, eles pararam de agrupar o md5sum na versão 10.5 ... Agora instalei a ferramenta original unix md5sum.
Ben Griffiths

Respostas:

20

md5sumpossui uma -copção para verificar um conjunto existente de somas e seu status de saída indica êxito / falha.

Exemplo:

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

Encontre aqui um bom recurso

psusi
fonte
4
Obrigado. Apenas para conclusão, agora uso o md5sum -c - <<<"b4460802b5853b7bb257fbf071ee4ae2 file_name.ext"que parece mais limpo do que envolver o grep!
Ben Griffiths
hmm, não há muita melhoria no arquivo $ md5 original | grep given_checksum e se você quiser usar caso corda insensível você tem que ficar com grep -i
StandardNerd
Eu estava recebendo no properly formatted MD5 checksum lines foundquando estava usando, md5sum -c <file.md5> <file>mas esse comando funcionou para mim.
Vishrant
1

A maneira usual do bash seria:

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

Isso informará Ok se eles são iguais.

Isso funciona com alcatrão também.

Anthony Petrillo
fonte
0

Inspirado pela resposta de psusi

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

Eu usei cutcomo nem todos os md5são armazenados da mesma maneira. Exemplo

Vishrant
fonte