パイプラインを介してハッシュ合計を計算し、一致するものがない場合は中止します。

パイプラインを介してハッシュ合計を計算し、一致するものがない場合は中止します。

パイプを介してファイルのチェックサムをどのように確認できますか?たとえば、私は次のことをしたいと思います。

curl -sL https://example.org/maybe-safe-maybe-not.tar.gz | md5sum 8da7904f495f682c39fa505b6404f9d1 | tar xvzC /usr/local/bin

同様のプログラムは、引数として提供されたハッシュが一致しない場合はパイプラインを中断し、一致した場合はmd5sumファイル出力を渡します。

少なくとも私がテストしたバージョンを受け取っていることを確信できるので、これは私のスクリプトをより安全にするだろうと思います。


いくつかのトリックを使用して合計を確認できます。

cat yarn.lock | md5sum -c <(echo 8da7904f495f682c39fa505b6404f9d1 -) --status

yarn.lockしかし、後で出力を渡す方法がわかりません。

答え1

ファイル名でダウンロードしたmaybe-safe-maybe-not.tar.gz後:

expected_digest='8da7904f495f682c39fa505b6404f9d1'
if [ "${expected_digest} -" = "$(md5sum <maybe-safe-maybe-not.tar.gz)" ]; then
    tar xvzf maybe-safe-maybe-not.tar.gz -C /usr/local/bin
else
    echo 'ERROR: ...'
    exit 1
fi

関連情報