Ich möchte ständig etwas herunterladen und die Integrität des Downloads sofort in einem Skript überprüfen, konnte jedoch nicht die richtige Formel dafür finden sha256sum
.
MY_SHA256=e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
sha256sum some_binary | sha256sum --check ${MY_SHA256}
Wie kann ich den Hash sha256sum
einer neuen Datei sofort mit einem bekannten Hash vergleichen?
Antwort1
Ich habe eine Archivdatei und eine zugehörige Prüfsummendatei heruntergeladen. So überprüfe ich, ob der Hash des heruntergeladenen Archivs mit dem Hash der heruntergeladenen Prüfsummendatei übereinstimmt:
echo "$(cat archive.tar.gz.sha256) archive.tar.gz" | sha256sum --check --status
Das --status
Flag verhindert alle stdout-Ausgaben (effektiver als --quiet
). Ich muss mich dann auf den Rückgabecode verlassen, um zu bestimmen, ob sie übereinstimmen, was ich sowieso will, da ich dies in einem Skript verwenden werde.
Antwort2
Beispiel:
echo "67574ee0039eaf4043a237e7c4b0eb432ca07ebf9c7b2dd0667e83bc3900b2cf kali-linux-2019.2-amd64.iso" | sha256sum -c
Falls Sie die sha256sum
Datei haben, können Sie sie direkt verwenden:
sha256sum -c "kali-linux-2019.2-amd64.iso.txt.sha256sum"
Erläuterung:
Im obigen Beispiel haben Sie
echo "<known SHA 256 sum of the file> <name of the file>" | sha256sum -c
sha256sum
-c
Mit dieser Option können Sie die SHA256-Summe entweder aus einer sha256sum
Datei oder aus lesen STDIN
. Falls Sie die Datei nicht haben sha256sum
, echo
können Sie mit dem Befehl dieselben Details angeben, die in einer sha256sum
Datei enthalten sind.
Falls Sie die sha256sum
Datei haben, können Sie sie direkt verwenden:
sha256sum -c "<sha256sum file name>"
Notiz:
Alternativ können Sie shasum -a 256
anstelle von verwenden, sha256sum
wobei -a
der zu verwendende Algorithmus angibt.
Antwort3
Sie können sehen, dass sha256sum --check
die Ausgabe eines vorherigen (regulären) sha256sum-Laufs übernommen wird: Es übernimmt Hashes und Dateinamen über stdin und vergleicht sie mit tatsächlichen Dateien.
Daher besteht das Naheliegendste darin, die Ausgabe manuell im gewünschten Format einzugeben:
$ echo "da39a3ee5e6b4b0d3255bfef95601890afd80709 motd" | sha1sum --check
motd: OK
Antwort4
Wenn Sie die Prüfsummendatei haben, können Sie einfach Folgendes tun sha256sum --check
. Zum Beispiel:
% 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