MD5脚本和grep cmd

时间:2013-02-05 17:49:58

标签: bash grep md5 md5sum

我在Ubuntu网站上找到了这个简洁的小脚本。该脚本验证 通过将其与iso(9660)文件的MD5总和进行比较来获得CD的内容。我不 理解为什么脚本在计算md5总和后解析字符串。

CSUM1=$(CHECKSUM "$1" | grep -om1 '^[0-9a-f]*')

如何验证传递给脚本的cmdline参数是否为真正的md5哈希值(不区分大小写且为十六进制(0-9 / a-f))。网上有几个片段显示如何验证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

1 个答案:

答案 0 :(得分:1)

  

我不明白为什么脚本在md5总和之后解析字符串   计算。   CSUM1=$(CHECKSUM "$1" | grep -om1 '^[0-9a-f]*')

它必须解析它,因为md5sum,等人不会只是放出哈希

$ md5sum lupu-528.005.iso
8ad170c46b523436776398fa5ce39fa4 *lupu-528.005.iso
  

如何验证传递给脚本的cmdline参数是否为真正的md5   散列

使用该脚本的目的是传递文件,而不是散列。