2009-08-19 12 views
6

herhangi biri ... ...BSD md5 vs GNU md5sum çıkış formatı? BSD md5 programı bu formatta karma çıktı üretir neden GNU md5sum böyle çok daha mantıklı formatını üretir iken

MD5 (checksum.md5) = 9eb7a54d24dbf6a2eb9f7ce7a1853cd0 

bilir?

9eb7a54d24dbf6a2eb9f7ce7a1853cd0 checksum.md5 

Anlatabildiğim kadarıyla, md5sum biçiminin ayrıştırılması daha kolay ve daha mantıklı. Md5 ile md5sum -check'u nasıl yaparsınız? Ve -p, -q, -r, -t, -x seçenekleri ne anlama geliyor? man md5 bu seçenekler hakkında hiçbir şey söylemiyor! : |

+0

, ya poweruser/serverfault üzerinde olabilir, ancak gerçekten buraya ait değil. – spender

+3

... ya da süper kullanıcı mı? Hiç hatırlamıyorum – spender

+0

'md5 -r',' md5sum''a (checksum, o dosya adı) oldukça benzer bir şey üretecektir. Örneğin, 'bul. -type f -print0 | xargs -0 md5 -r' tüm dosyalarınız için md5 sağlama listelerini listeler. – Dave

cevap

4

Tarihi nedenler, sanırım. Bu arada, -q baskı "MD5 (...) =" çıktı, yani md5 -q checksum.md5,

9eb7a54d24dbf6a2eb9f7ce7a1853cd0

Bu md5 herhangi bir argüman verilmediyse ve stdin'den okunduğunda ima edilir. Bu durumda Maalesef md5sum bırakır "-" sağlama arkasında ("9eb7a54d24dbf6a2eb9f7ce7a1853cd0 -"), Eğer sağlama dönmek için bazı genel fonksiyonu arıyorsanız eğer öyleyse, burada yardımcı olabilecek şeydir:

 
checksum() { 
     (md5sum <"$1"; test $? = 127 && md5 <"$1") | cut -d' ' -f1 
} 
checksum /etc/hosts 

FreeBSD adam sayfasını argümanlar hakkında söylediği

 -p  Echo stdin to stdout and append the checksum to stdout.

-q  Quiet mode ‐ only the checksum is printed out. Overrides the -r 
     option. 

-r  Reverses the format of the output. This helps with visual diffs. 
     Does nothing when combined with the -ptx options. 

-t  Run a built‐in time trial. 

-x  Run a built‐in test script. 

0

Bir checksum dosyasını arayın ve checksum.md5 dosya içeriğine karşı kontrol edecektir GNU md5sum -c checksum.md5 kullanabilirsiniz. Bu doğru veya yanlış dönecektir

system("md5sum -c checksum.md5 | grep \"checksum: OK\" -")

: Bir BSD karşı kontrol etmek için bir Ruby sistem çağrısı içinde

md5sum -c checksum.md5 | grep "checksum: OK" -

Örnek Md5 dosyasını biçimlendirilmiş.

2

Bunun eski bir sayfa olduğunu anlıyorum, fakat FreeBSD üzerinde kontrol toplamları yapıyordum ve bunları Linux'ta kontrol ediyordum ve bu sayfaya da rastladım. Bu sayfa bana sorunu çözmeye yardımcı olmadı, bu yüzden Linux md5sum çıktı eşleşen FreeBSD'ye toplamlarını oluşturmak için bu küçük sed komut ile geldi:

md5 file [file ...] | sed -e 's#^MD5 [(]\(.*\)[)] = \(.*\)$#\2 \1#' > md5sums.txt 

Bu FreeBSD md5 komutunu kullanın ve yeniden düzenlemek olacaktır çıktı GNU md5sum gibi görünecek.

Sonra Linux üzerinde sadece md5sum --check md5sums.txt

Ayrıca FreeBSD md5 komutu tarafından üretilen mevcut bir dosya ile yukarıdaki sed komut dosyasını kullanabilirsiniz kullanabilirsiniz.

alias md5sum "md5 \!* | sed -e '"'s#MD5 [(]\(.*\)[)] = \(.*\)$#\2 \1#'"'" 

şimdi FreeBSD üzerinde sadece md5sum file1 file2 file3 ... söyleyebiliriz ve çok işe yarıyor:

Ben de FreeBSD .cshrc dosyasında bu takma adı koydu.

+0

sed komut dosyası, centos6'daki GNU md5sum'dan daha az bir yer verdi. NBD, ama "diff" biraz masaj yapmadan işe yaramadı. –

3

Geçerli OS X BSD sistemlerinde, beklenen çıktıyı almak için md5 -r komutunu belirtebilirsiniz.

[email protected]:/vms/DevOps-v3.4$ md5 vmware* 
MD5 (vmware-0.log) = 61ba1d68a144023111539abee08f4044 
MD5 (vmware-1.log) = 97bc6f22b25833c3eca2b2cc40b83ecf 
MD5 (vmware-2.log) = f92a281102710c4528d4ceb88aa0ac9b 
MD5 (vmware.log) = 1f7858d361929d4bc5739931a075c0ad 

bekliyordum ve Linux makineden üretildi linux md5 toplamları ile diff daha kolay gibi anahtarı daha çıktı göz yapılan -r md5 ekleme.

[email protected]:/vms/DevOps-v3.4$ md5 -r vmware* 61ba1d68a144023111539abee08f4044 vmware-0.log 97bc6f22b25833c3eca2b2cc40b83ecf vmware-1.log f92a281102710c4528d4ceb88aa0ac9b vmware-2.log 1f7858d361929d4bc5739931a075c0ad vmware.log 

Bu

bir linux kutusu md5sum komutuyla oluşturulan çıkışından diff kolaydır beni yapmak için en basit yaklaşım oldu.