Bash obtém MD5 do arquivo online

0

Eu preciso obter o hash MD5 de um arquivo on-line e compará-lo a um arquivo na máquina local.

Como posso fazer isso no bash?

    
por Finlay Roelofs 15.10.2015 / 12:03

5 respostas

2

Você pode usar curl para buscar o arquivo on-line:

curl -sL http://www.your.fi/le | md5sum | cut -d ' ' -f 1

Para comparar com outro, armazene em um var e prossiga:

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
    
por fedorqui 15.10.2015 / 12:12
1

wget pode fazer o download para a saída padrão com -O- .

 wget http://example.com/some-file.html -O- \
     | md5sum \
     | cut -f1 -d' ' \
     | diff - <(md5sum local-file.html | cut -f1 -d' ')

md5sum acrescenta o nome do arquivo após o MD5, você pode removê-lo com cut .

    
por choroba 15.10.2015 / 12:05
1
 wget -q -O- http://example.com/your_file | md5sum | sed 's:-$:local_file:' | md5sum -c

Substitua http://example.com/your_file pelo URL do seu arquivo on-line e local_file pelo nome do seu arquivo local

    
por Florian Diesch 15.10.2015 / 12:28
1

Você também pode fazer isso diretamente. Use wget ou curl para imprimir o conteúdo do arquivo remoto e também imprimir o conteúdo do arquivo local. Passe ambos para md5sum e compare a saída:

$ md5sum <(wget  http://www.exacmple.com/file -O- 2>/dev/null) <(cat localfile) 
733f328d8cff7dd89970ec34a70aa14f  /dev/fd/63
733f328d8cff7dd89970ec34a70aa14f  /dev/fd/62

A primeira linha será o md5sum do arquivo remoto e o segundo é o do local.

    
por terdon 15.10.2015 / 14:49
0

Via wget e md5sum e awk como um longo liner =)

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)

Exemplo

$ 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
    
por A.B. 15.10.2015 / 12:06