ハッシュチェック方法

Iso ファイルをダウンロードする際、ハッシュ値でダウンロードが正しく終了したか確認したいことがあります。

ハッシュをとって目視で確認してもいいんだけど、正直面倒です。

sha256sum とか md5sum なんかでできるんだけど、どうしても覚えられないのでメモ

; ハッシュ不一致のときは表示なしになる
$ sha256sum aa.iso |grep -i ハッシュ値


; このパターンだと " のなかでファイル名の補完ができないのでちょっと面倒
$ echo "ハッシュ値 aa.iso" |sha256sum

;  bash, zsh などは可、sh だとできない
$ sha256sum -c <<< "<ハッシュ値>  aa.iso"

どれも一長一短あるけれど、自分の思考のクセでは、後 grep が1番楽に思い出せる。

ついでにスクリプトを claude に書いてもらった。

zsh で動かしているが bash にするには、 1 行目を bazh にして 13、14 行のコメントを入れ替える必要がある。

こうすると スクリプト 対象ファイル名 ハッシュ となり自分の癖では覚えやすい。

   1 #!/usr/bin/zsh
   2 # usage: checksha256.sh FILE HASH
   3 set -euo pipefail
   4 
   5 cmd=sha256sum
   6 
   7 if [ $# -ne 2 ]; then
   8     echo "usage: $(basename "$0") FILE HASH" >&2
   9     exit 2
  10 fi
  11 
  12 file=$1
  13 # expected=${2,,}   # bash 小文字に統一
  14 expected=${2:l}    # zsh での小文字化
  15 
  16 if [ ! -f "$file" ]; then
  17     echo "error: file not found: $file" >&2
  18     exit 2
  19 fi
  20 
  21 actual=$("$cmd" < "$file")
  22 actual=${actual%% *}
  23 
  24 if [ "$actual" = "$expected" ]; then
  25     echo "OK: $file"
  26     exit 0
  27 else
  28     echo "FAILED: $file" >&2
  29     echo "  expected: $expected" >&2
  30     echo "  actual:   $actual" >&2
  31     exit 1
  32 fi


Comments

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です