md5sum check (sem arquivo)

4

Estou tentando verificar dezenas de arquivos usando um script de shell. A verificação do arquivo acontece em momentos diferentes.

Existe uma maneira de fazer isso?

md5sum -c 24f4ce42e0bc39ddf7b7e879a File.name

ou melhor ainda sha512sum

sha512sum -c 24f4ce42e0bc39ddf7b7e879a File.name

Agora eu tenho que fazer isso:

md5sum -c file.md5sums File.name

Ou melhor ainda, eu poderia ter todos os md5sums em um único arquivo e verificá-los assim:

md5sum -c 'sed 1p file.md5sums' File.name
md5sum -c 'sed 2p file.md5sums' File.name
md5sum -c 'sed 3p file.md5sums' File.name
md5sum -c 'sed 4p file.md5sums' File.name

Parece bobagem ter dezenas de arquivos com entradas únicas neles.

    
por Jon17 16.06.2016 / 21:04

3 respostas

2

Se você está fazendo isso em um script, você pode simplesmente fazer uma comparação simples por exemplo,

if [ "$(md5sum < File.name)" = "24f4ce42e0bc39ddf7b7e879a  -" ]
then
  echo Pass
else
  echo Fail
fi

Observe os espaços extras e - necessários para corresponder à saída do md5sum.

Você pode fazer isso com uma linha se parecer mais limpo

[[ "$(md5sum < File.name)" = "24f4ce42e0bc39ddf7b7e879a  -" ]] && echo Pass || echo Fail
    
por 16.06.2016 / 22:49
4

Eu consegui fazer um sha256sum em vários arquivos, gravar a saída em um arquivo de texto e executar um sha256sum -c sumfile e pareceu funcionar para mim.

$ sha256sum $(find /etc/ -maxdepth 1 -type f) > test.txt
$ sha256sum -c test.txt
...
/etc/statetab: OK
/etc/sysctl.conf: OK
/etc/system-release: OK
/etc/system-release-cpe: OK
/etc/termcap: OK
/etc/updatedb.conf: OK
/etc/vconsole.conf: OK
/etc/vimrc: OK
/etc/virc: OK
/etc/yum.conf: OK
...
$ sha256sum --version
sha256sum (GNU coreutils) 8.22
    
por 16.06.2016 / 21:38
3

O utilitário md5sum , como todos os outros utilitários similares na coleção GNU Coreutils, é capaz de pegar um arquivo de checksums e verificá-los nos arquivos correspondentes no sistema de arquivos.

Digamos que eu gerou o arquivo de soma de verificação assim:

$ md5sum /etc/* >sums
$ cat sums
e55afe6e88abb09f0bee39549f1dfbbd  /etc/afpovertcp.cfg
279f7ab7d2609163e5034738b169238b  /etc/aliases
5c1ba75b6d9d8cf921ec83e2a54c9bb5  /etc/asl.conf
[...]
d41d8cd98f00b204e9800998ecf8427e  /etc/xtab
32d37eb59a7c3735635db329adad86d7  /etc/zprofile
4efb8dbeb8f46ca3879666b313a2607f  /etc/zshrc

Eu posso verificar todas as somas de verificação de uma só vez, assim:

$ md5sum -c sums
/etc/afpovertcp.cfg: OK
/etc/aliases: OK
/etc/asl.conf: OK
[...]
/etc/xtab: OK
/etc/zprofile: OK
/etc/zshrc: OK

Se eu o entendi errado e você só quer verificar um arquivo em particular de vários arquivos no seu arquivo sums , então eu faria assim:

$ fgrep "/etc/xtab" sums | md5sum -c -
    
por 16.06.2016 / 23:12