我在 Ubuntu 网站上找到了这个简洁的小脚本。该脚本通过将 CD 内容与 iso(9660) 文件的 MD5 和进行比较来验证 CD 的内容。我不明白为什么脚本在计算 md5 总和后解析字符串。
CSUM1=$(CHECKSUM "$1" | grep -om1 '^[0-9a-f]*')
如何验证传递给脚本的 cmdline 参数是真正的 md5 哈希(不区分大小写和十六进制(0-9/af))。网上有几个片段展示了如何验证 md5 哈希值。如果将 .md5 文件作为参数传递,我想验证并 grep MD5 哈希,如果不是,则验证哈希。我得到了计算和比较的脚本......
# Compares the checksums of an iso9660 image and a burned disk.
# This script is released into the public domain by it's author.
if [ -n "$BASH" ]
then
shopt -s expand_aliases
fi
if [ -n "$CHECKSUM" ]
then
alias CHECKSUM="$CHECKSUM"
elif which md5deep &> /dev/null
then
alias CHECKSUM='md5deep -e'
else
alias CHECKSUM='md5sum'
fi
if [ -n "$2" ]
then
DISKDEVICE="$2"
else
DISKDEVICE='/dev/cdrom'
fi
CSUM1=$(CHECKSUM "$1" | grep -om1 '^[0-9a-f]*')
# extract cmdline arg
echo 'checksum for input image:' $CSUM1
SIZE=$(stat -c '%s' "$1")
BLOCKS=$(expr $SIZE / 2048)
CSUM2=$(dd if="$DISKDEVICE" bs=2048 count=$BLOCKS 2>/dev/null | CHECKSUM | grep -om1 '^[0-9a-f]*')
echo 'checksum for output disk:' $CSUM2
if [ "$CSUM1" = "$CSUM2" ]
then
echo 'verification successful!'
else
echo 'verification failed!'
fi