スクリプトを使用して、NAS からハードディスクとエンクロージャの情報をエクスポートするにはどうすればよいですか?
最終更新日:
2025-09-17
対象製品
NAS (QTS / QuTS hero)
シナリオ
QNAP NAS を拡張ユニットと一緒に使用する場合、ドキュメントや在庫管理のために、インストールされているすべてのハードドライブの詳細情報(ブランド、モデル、シリアル番号など)をエクスポートしたいことがあります。この情報はグラフィカルインターフェースに表示されますが、上級ユーザーは SSH 経由でコマンドラインを使用してこれらのディスク詳細を取得およびエクスポートできます。これは、自動化や IT 資産の在庫を取るのに役立ちます。
手順
- QNAP NAS で SSH アクセスを有効にする。
注意: SSH を有効にするとセキュリティリスクが発生する可能性があります。強力なパスワードを使用し、使用しないときは SSH を無効にしてください。 - SSH 経由で NAS に接続するSSH クライアント(PuTTY や Terminal など)を使用して。
- 提供された
hdd_id.sh
スクリプトを使用してディスク情報をエクスポートする:- スクリプトをダウンロードまたは作成する:次の内容を保存する
hdd_id.sh
NAS で:!/bin/sh 使用方法: ./hdd_id.sh すべてのエンクロージャ、タブ区切り (標準出力) ./hdd_id.sh --csv すべてのエンクロージャ、
- -DiskList.csv に書き込み ./hdd_id.sh 1 enc_id= 1 のみ、タブ区切り ./hdd_id.sh --csv 1 enc_id= 1 のみ、 - -DiskList.csv に書き込み CSV=0 if ["$1" = "--csv"]; then CSV=1 shift fi if [-n "$1"]; then ENC_LIST="$1" else ENC_LIST=$(hal_app --se_enum 2>/dev/null | awk '/^=/{next} NF==0{next} /(^|[[:space:]])enc_id($|[[:space:]])/ {hdr=1; next} hdr && $1 ~ /^[0-9]+$/ {print $1}' | sort -n | uniq) fi [-z "$ENC_LIST"] && {echo "エンクロージャ enc_id が見つかりません。"; exit 1;} OUTFILE=""DELIM="\t"if [$CSV -eq 1]; then HOSTNAME=$(uname -n 2>/dev/null) [-z"$HOSTNAME"] && HOSTNAME="NAS"DATESTR=$(date +%Y%m%d) OUTFILE="${HOSTNAME}-${DATESTR}-DiskList.csv"DELIM=","echo"Enclosure,Slot,Brand,Model,Serial">"$OUTFILE"fi for ENC in $ENC_LIST; do NAME=$(hal_app --se_get_jbod_display_name enc_id=$ENC 2>/dev/null) [-z"$NAME"] && NAME="ENC_${ENC}"hal_app --pd_enum enc_id=$ENC 2>/dev/null | awk -v name="$NAME"-v D="$DELIM"-v csv="$CSV"-v out="$OUTFILE" ' /^=/{next} NF==0{next} !hdr && /(^|[[:space:]])port_id($|[[:space:]])/ && /vendor/ && /model/ && /serial_no/ { for(i=1;i<=NF;i++){if($i=="port_id") pid=i if($i=="vendor") bid=i if($i=="model") mid=i if($i=="serial_no") sid=i } hdr=1; next } hdr && $1 ~ /^[0-9]+$/ && pid>0 && bid>0 && mid>0 && sid>0 {line = name D $(pid) D $(bid) D $(mid) D $(sid) if (csv==1) {print line>> out } else {print line} } ' done - スクリプトを実行可能にする:
chmod +x hdd_id.sh
- 必要に応じてスクリプトを実行します:
./hdd_id.sh
— すべてのエンクロージャを一覧表示し、タブ区切りのデータを端末に出力します。./hdd_id.sh --csv
— すべてのエンクロージャを一覧表示し、CSV ファイルに出力します。<host>-<yyyymmdd>-DiskList.csv.
./hdd_id.sh 1
— 指定されたエンクロージャのみを一覧表示します。enc_id=1
、タブ区切り。./hdd_id.sh --csv 1
— 指定されたエンクロージャのみを一覧表示し、enc_id=1
、CSV に出力します。
- 出力例:
ENC_03TOSHIBAMC04ACA300E85G9XXXXFLVA ENC_06SeagateST8000VX010-2ZR188WPV0XYZZ ENC_07SeagateST8000VX010-2ZR188WPV0ZZZZ ENC_08SeagateST8000VX010-2ZR188WPVXXXR5 TR-004-N0011SeagateST4000NE001-2MA101WS24ZZZB TR-004-N0012SeagateST4000NE001-2MA101WS24XXXY
各行には以下が含まれます:エンクロージャ名、スロット、ブランド、モデル、シリアル。
- エクスポートされたファイルをダウンロード( 使用している場合
--csv
)、NAS から File Station または SMB/CIFS を使用して。
- スクリプトをダウンロードまたは作成する:次の内容を保存する