シェルスクリプトでディスク消去(7)
さて、消去したあとでなんとなくログに吐き出して保存しておきたくなると思います。そこで、ハードウェア情報と消去方式とHDDのダンプの一部を出力してそれをシリアルナンバーのファイル名で保存しようと思います。
まずはこれを実現するコマンドでteeというものがあります。これは標準出力を画面に、tee <ファイル名>をパイプでつなげてやると、画面に出力された標準出力を<ファイル名>にも出力してくれます。teeのオプション -a を指定すると追記もしてくれます。試してみましょう。
sn=`dmidecode -t system | grep Serial | awk -F'[:]' '{ print $2}' | sed 's/^[[:blank:]]*//' `
echo $sn | tee "${sn}.log"
一行目のdmidecodeは普通に
dmidecode -t system | grep Serial
とすると、[ Serial Number: XXXX ] となるので、awkで区切り文字をコロンに指定して、print $2でそのコロンで区切られた2つ目の文字列を取得するという働きをします。ただ、これではシリアルナンバーの前に1文字空白が入るので、それをsedコマンドで除去しています。
そのようにして取得した変数$snをechoで出力しつつ、teeコマンドでファイルにも出力しています。
これでいろいろな出力を画面で見つつ、ファイルにも出力できるようになります。
ただ、実際はwhiptailで表示する仕組みなので、teeは使わないでいきます。