投稿

ラベル(sg3_utils)が付いた投稿を表示しています

Linux で SATA ドライブのシリアル番号を表示するスクリプト

仕事柄、ストレージを扱うことが多いのですが、SATAドライブのシリアル番号を調べる必要がありました。 サーバーのSATAポートに直接接続されているものであれば hdparm で調べられますが、LSI のSAS-HBA に接続されているドライブには hdparm は使用できません。 こんなときは sg3_utils を使用することで SAS-HBA 越しの SATA ドライブのシリアル番号を取得できます。 sg_sat_identify DEVICE と指定すればドライブの IDENTIFY DEVICE DATA を見ることができます。しかしさすがに見づらいのでスクリプトと od で整形して表示するようにしました。 # シリアル番号の取得 # 入力: # $1 デバイスファイル get_serial_number() { local a=(`sg_sat_identify --raw $1 | od -j 20 -N 20 -t a -A n`) for i in `seq 0 2 18` do if [ "${a[$i + 1]}" != "sp" ] then ser="$ser${a[$i + 1]}" fi if [ "${a[$i]}" != "sp" ] then ser="$ser${a[$i]}" fi done echo $ser } いががでしょうか。 sg_sat_identify がエラーを返したとき終了ステータスを取得する方法がわかりません・・・