Bash получить MD5 онлайн-файла
Мне нужно получить хэш MD5 онлайн-файла, а затем сравнить его с файлом на локальной машине.
Как я могу сделать это в Bash?
5 ответов
Ты можешь использовать curl
чтобы получить онлайн файл:
curl -sL http://www.your.fi/le | md5sum | cut -d ' ' -f 1
Для сравнения с другим сохраните его в var, а затем продолжите:
online_md5="$(curl -sL http://www.your.fi/le | md5sum | cut -d ' ' -f 1)"
local_md5="$(md5sum "$file" | cut -d ' ' -f 1)"
if [ "$online_md5" == "$local_md5" ]; then
echo "hurray, they are equal!"
fi
Вы также можете просто сделать это напрямую. использование wget
или же curl
распечатать содержимое удаленного файла, а также распечатать содержимое локального файла. Передать оба md5sum
и сравните вывод:
$ md5sum <(wget http://www.exacmple.com/file -O- 2>/dev/null) <(cat localfile)
733f328d8cff7dd89970ec34a70aa14f /dev/fd/63
733f328d8cff7dd89970ec34a70aa14f /dev/fd/62
Первая строка будет удаленным файлом md5sum
а второй местный.
wget
можно загрузить в стандартный вывод с -O-
,
wget http://example.com/some-file.html -O- \
| md5sum \
| cut -f1 -d' ' \
| diff - <(md5sum local-file.html | cut -f1 -d' ')
md5sum
добавляет имя файла после MD5, вы можете удалить его cut
,
wget -q -O- http://example.com/your_file | md5sum | sed 's:-$:local_file:' | md5sum -c
замещать http://example.com/your_file
с URL вашего онлайн-файла и local_file
с именем вашего локального файла
С помощью wget
а также md5sum
а также awk
как длинный однострочник =)
awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}'\
<(wget -O- -q URL | md5sum)\
<(md5sum local_file)
пример
$ awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}' <(wget -O- -q http://security.ubuntu.com/ubuntu/pool/main/h/hunspell/libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb | md5sum) <(md5sum libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb)
match
$ awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}' <(wget -O- -q http://security.ubuntu.com/ubuntu/pool/main/h/hunspell/libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb | md5sum) <(md5sum foo)
no match