Prostszy sposób porównywania sumy kontrolnej md5?

Po pobraniu pliku, który ma dostępną sumę kontrolną md5, obecnie sprawdzam go za pomocą

md5 *file* | grep *given_checksum* 

np.

md5 file.zip | grep -i B4460802B5853B7BB257FBF071EE4AE2 

ale wydawało mi się zabawne, gdy wymagałem grepa i fajki do tego, co z pewnością jest bardzo powszechnym zadaniem. Jako specjalista od wydajnego robienia rzeczy, zastanawiałem się, czy jest lepszy sposób na zrobienie tego?

Komentarze

  • Co to za narzędzie md5? Z jakiego pakietu to pochodzi?
  • Nie ' nie zdawałem sobie sprawy, że było inaczej, dopóki nie zadałem tego pytania i nie zacząłem szukać odpowiedzi, ale ' m korzystam z bash na OS X i to ' s Apple ' własne narzędzie, które nie ' nie ma opcji -c. Najwyraźniej przestali łączyć md5sum w 10.5 … Ja ' zainstalowałem oryginalne narzędzie unix md5sum.

Odpowiedź

md5sum ma opcję -c umożliwiającą sprawdzenie istniejącego zestawu sum i jego status wyjścia wskazuje na sukces / niepowodzenie.

Przykład:

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

Znajdź fajny zasób tutaj

Komentarze

  • Dziękujemy. Na koniec używam teraz md5sum -c - <<<"b4460802b5853b7bb257fbf071ee4ae2 file_name.ext", co wydaje się czystsze niż użycie grepa!
  • hmm, niewiele ulepszyliśmy oryginalnego pliku $ md5 | grep dana_suma kontrolna i jeśli chcesz użyć łańcucha bez rozróżniania wielkości liter, musisz trzymać się grep -i
  • Otrzymywałem no properly formatted MD5 checksum lines found, używał md5sum -c <file.md5> <file>, ale to polecenie zadziałało.

Odpowiedź

Zwykła metoda basha wyglądałaby tak:

shopt -s nocasematch if [[ $(md5sum "$file") = 5d40f31729c992b5a0e67490689fe8ff* ]] 

Odpowiedź

md5sum -c <filename>.zip.md5 <filename>.zip 

To powie ci OK, jeśli są takie same.

Działa to również z tar.

Odpowiedź

Zainspirowany odpowiedzią psusi

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

Użyłem cut, ponieważ nie wszystkie md5 są przechowywane w ten sam sposób. Przykład

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *