
Continuo querendo fazer o download e verificar a integridade do download imediatamente em um script, mas não consegui encontrar o encantamento correto de sha256sum
.
MY_SHA256=e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
sha256sum some_binary | sha256sum --check ${MY_SHA256}
Como posso pegar sha256sum
um novo arquivo e compará-lo com um hash conhecido imediatamente?
Responder1
Baixei um arquivo compactado e um arquivo de soma de verificação que o acompanha. Veja como verifico se o hash do arquivo baixado corresponde ao hash do arquivo de soma de verificação baixado:
echo "$(cat archive.tar.gz.sha256) archive.tar.gz" | sha256sum --check --status
O --status
sinalizador impede todas as saídas stdout (mais eficazes que --quiet
). Em seguida, preciso confiar no código de retorno para determinar se eles correspondem, o que é o que eu quero, já que usarei isso em um script.
Responder2
Exemplo:
echo "67574ee0039eaf4043a237e7c4b0eb432ca07ebf9c7b2dd0667e83bc3900b2cf kali-linux-2019.2-amd64.iso" | sha256sum -c
Caso você tenha o sha256sum
arquivo, você pode usá-lo diretamente:
sha256sum -c "kali-linux-2019.2-amd64.iso.txt.sha256sum"
Explicação:
No exemplo acima, você tem
echo "<known SHA 256 sum of the file> <name of the file>" | sha256sum -c
sha256sum
-c
A opção pode ler a soma SHA256 de um sha256sum
arquivo ou de um arquivo STDIN
. Caso você não tenha o sha256sum
arquivo, então usando o echo
comando você pode fornecer os mesmos detalhes contidos em um sha256sum
arquivo.
Caso você tenha o sha256sum
arquivo, você pode usá-lo diretamente:
sha256sum -c "<sha256sum file name>"
Observação:
Alternativamente, você pode usar shasum -a 256
em vez de sha256sum
onde -a
especifica o algoritmo a ser usado.
Responder3
Você pode ver que sha256sum --check
ele obtém a saída de uma execução anterior (normal) do sha256sum: ele pega hashes e nomes de arquivos via stdin e os compara com os arquivos reais.
Portanto, a coisa óbvia a fazer é fornecer manualmente a saída no formato desejado:
$ echo "da39a3ee5e6b4b0d3255bfef95601890afd80709 motd" | sha1sum --check
motd: OK
Responder4
Se você tiver o arquivo de soma de verificação, poderá simplesmente fazer um arquivo sha256sum --check
. Por exemplo:
% ls
elasticsearch-7.9.3-darwin-x86_64.tar.gz # File to check
elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512 # Checksum file
% sha512sum --check elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512
elasticsearch-7.9.3-darwin-x86_64.tar.gz: OK