如何使用脚本从我的 NAS 导出硬盘和外壳信息?
最后修订日期:
2025-09-17
适用产品
NAS (QTS / QuTS hero)
场景
如果您使用带有扩展单元的 QNAP NAS,您可能希望导出所有已安装硬盘的详细信息,例如品牌、型号和序列号,以便进行文档记录或库存管理。虽然这些信息会显示在图形界面中,但高级用户可以通过 SSH 使用命令行检索并导出这些磁盘详细信息。这对于自动化或管理您的 IT 资产库存非常有帮助。
步骤
- 在您的 QNAP NAS 上启用 SSH 访问。
注意:启用 SSH 可能会带来安全风险。请确保使用强密码,并在不使用时禁用 SSH。 - 通过 SSH 连接到您的 NAS使用 SSH 客户端(如 PuTTY 或终端)。
- 使用提供的
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" 机箱, 槽位, 品牌, 型号, 序列号 ">"$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
— 列出所有机箱,输出到名为<host>-<yyyymmdd>-DiskList.csv 的 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。
- 下载或创建脚本:将以下内容保存为