How do I export hard disk and enclosure information from my NAS using a script?
ฉันจะส่งออกข้อมูลฮาร์ดดิสก์และกล่องใส่จาก NAS ของฉันโดยใช้สคริปต์ได้อย่างไร?


Last modified date: 2025-09-17

ผลิตภัณฑ์ที่ใช้ได้

NAS (QTS / QuTS hero)


สถานการณ์

หากคุณใช้ QNAP NAS กับหน่วยขยาย คุณอาจต้องการส่งออกข้อมูลรายละเอียดเกี่ยวกับฮาร์ดไดรฟ์ที่ติดตั้งทั้งหมด เช่น ยี่ห้อ รุ่น และหมายเลขซีเรียล เพื่อการจัดทำเอกสารหรือการตรวจนับ แม้ว่าข้อมูลนี้จะปรากฏในอินเทอร์เฟซกราฟิก ผู้ใช้ขั้นสูงสามารถดึงและส่งออกข้อมูลดิสก์เหล่านี้โดยใช้บรรทัดคำสั่งผ่าน SSH ซึ่งเป็นประโยชน์สำหรับการทำงานอัตโนมัติหรือการตรวจนับสินทรัพย์ไอทีของคุณ 


ขั้นตอน

  1. เปิดใช้งานการเข้าถึง SSH บน QNAP NAS ของคุณ
    หมายเหตุ: การเปิดใช้งาน SSH อาจทำให้เกิดความเสี่ยงด้านความปลอดภัย ตรวจสอบให้แน่ใจว่าคุณใช้รหัสผ่านที่แข็งแกร่งและปิดใช้งาน SSH เมื่อไม่ได้ใช้งาน
  2. เชื่อมต่อกับ NAS ของคุณผ่าน SSHโดยใช้ไคลเอนต์ SSH (เช่น PuTTY หรือ Terminal)
  3. ใช้hdd_id.shสคริปต์เพื่อส่งออกข้อมูลดิสก์:
    • ดาวน์โหลดหรือสร้างสคริปต์:บันทึกเนื้อหาต่อไปนี้เป็นhdd_id.shบน NAS ของคุณ:
      #!/bin/sh
      # การใช้งาน:
         ./hdd_id.sh                ทุก enclosure, แยกด้วยแท็บ (ไปยัง stdout)
         ./hdd_id.sh --csv          ทุก enclosure, เขียนไปยัง --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 "ไม่พบ enclosure 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— แสดงรายการทั้งหมดของ enclosures, ส่งออกข้อมูลที่คั่นด้วยแท็บไปยัง terminal.
      • ./hdd_id.sh --csv— แสดงรายการทั้งหมดของ enclosures, ส่งออกไปยังไฟล์ CSV ชื่อ<HOST>-<YYYYMMDD>-DiskList.csv.
      • ./hdd_id.sh 1— แสดงรายการเฉพาะ enclosure ที่มีenc_id=1, คั่นด้วยแท็บ.
      • ./hdd_id.sh --csv 1— แสดงรายการเฉพาะ enclosureenc_id=1, ส่งออกไปยัง CSV.
    • ตัวอย่างผลลัพธ์:
      ENC_03TOSHIBAMC04ACA300E85G9XXXXFLVA
      ENC_06SeagateST8000VX010-2ZR188WPV0XYZZ
      ENC_07SeagateST8000VX010-2ZR188WPV0ZZZZ
      ENC_08SeagateST8000VX010-2ZR188WPVXXXR5
      TR-004-N0011SeagateST4000NE001-2MA101WS24ZZZB
      TR-004-N0012SeagateST4000NE001-2MA101WS24XXXY

      แต่ละบรรทัดประกอบด้วย:ชื่อ Enclosure,ช่อง,ยี่ห้อ,รุ่น,หมายเลขซีเรียล.

    • ดาวน์โหลดไฟล์ที่ส่งออก(ถ้าใช้--csv) จาก NAS ของคุณโดยใช้ File Station หรือ SMB/CIFS.



อ่านเพิ่มเติม

Was this article helpful?

Thank you for your feedback.

Please tell us how this article can be improved:

If you want to provide additional feedback, please include it below.

เลือกสเปค

      ดูเพิ่มเติม น้อยลง

      This site in other countries/regions:

      open menu
      back to top