本内容经过机器翻译。请参见机器翻译免责声明
切换为英语

How do I export hard disk and enclosure information from my NAS using a script?
如何使用脚本从我的 NAS 导出硬盘和外壳信息?


最后修订日期: 2025-09-17

适用产品

NAS (QTS / QuTS hero)


场景

如果您使用带有扩展单元的 QNAP NAS,您可能希望导出所有已安装硬盘的详细信息,例如品牌、型号和序列号,以便进行文档记录或库存管理。虽然这些信息会显示在图形界面中,但高级用户可以通过 SSH 使用命令行检索并导出这些磁盘详细信息。这对于自动化或管理您的 IT 资产库存非常有帮助。 


步骤

  1. 在您的 QNAP NAS 上启用 SSH 访问
    注意:启用 SSH 可能会带来安全风险。请确保使用强密码,并在不使用时禁用 SSH。
  2. 通过 SSH 连接到您的 NAS使用 SSH 客户端(如 PuTTY 或终端)。
  3. 使用提供的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。



进一步阅读

这篇文章有帮助吗?

谢谢您,我们已经收到您的意见。

请告诉我们如何改进这篇文章:

如果您想提供其他意见,请于下方输入。

选择规格

      显示更多 隐藏更多
      open menu
      back to top