ฉันจะส่งออกข้อมูลฮาร์ดดิสก์และกล่องใส่จาก NAS ของฉันโดยใช้สคริปต์ได้อย่างไร?
ผลิตภัณฑ์ที่ใช้ได้
NAS (QTS / QuTS hero)
สถานการณ์
หากคุณใช้ QNAP NAS กับหน่วยขยาย คุณอาจต้องการส่งออกข้อมูลรายละเอียดเกี่ยวกับฮาร์ดไดรฟ์ที่ติดตั้งทั้งหมด เช่น ยี่ห้อ รุ่น และหมายเลขซีเรียล เพื่อการจัดทำเอกสารหรือการตรวจนับ แม้ว่าข้อมูลนี้จะปรากฏในอินเทอร์เฟซกราฟิก ผู้ใช้ขั้นสูงสามารถดึงและส่งออกข้อมูลดิสก์เหล่านี้โดยใช้บรรทัดคำสั่งผ่าน SSH ซึ่งเป็นประโยชน์สำหรับการทำงานอัตโนมัติหรือการตรวจนับสินทรัพย์ไอทีของคุณ
ขั้นตอน
- เปิดใช้งานการเข้าถึง SSH บน QNAP NAS ของคุณ
หมายเหตุ: การเปิดใช้งาน SSH อาจทำให้เกิดความเสี่ยงด้านความปลอดภัย ตรวจสอบให้แน่ใจว่าคุณใช้รหัสผ่านที่แข็งแกร่งและปิดใช้งาน SSH เมื่อไม่ได้ใช้งาน - เชื่อมต่อกับ NAS ของคุณผ่าน SSHโดยใช้ไคลเอนต์ SSH (เช่น PuTTY หรือ Terminal)
- ใช้
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.
- ดาวน์โหลดหรือสร้างสคริปต์:บันทึกเนื้อหาต่อไปนี้เป็น