Hur exporterar jag information om hårddisk och hölje från min NAS med hjälp av ett skript?
Tillämpliga produkter
NAS (QTS / QuTS hero)
Scenario
Om du använder en QNAP NAS med en expansionsenhet kan du vilja exportera detaljerad information om alla installerade hårddiskar—såsom märke, modell och serienummer—för dokumentation eller inventering. Även om denna information visas i det grafiska gränssnittet kan avancerade användare hämta och exportera dessa diskdetaljer med hjälp av kommandoraden via SSH. Detta är användbart för automatisering eller för att inventera dina IT-tillgångar.
Procedur
- Aktivera SSH-åtkomst på din QNAP NAS.
Obs: Att aktivera SSH kan medföra säkerhetsrisker. Se till att använda starka lösenord och inaktivera SSH när det inte används. - Anslut till din NAS via SSH med en SSH-klient (t.ex. PuTTY eller Terminal).
- Använd den tillhandahållna
hdd_id.shskriptet för att exportera diskinformation:- Ladda ner eller skapa skriptet: Spara följande innehåll som
hdd_id.shpå din NAS:#!/bin/sh # Användning: ./hdd_id.sh alla kapslingar, tab-separerade (till stdout) ./hdd_id.sh --csv alla kapslingar, skriv till
- -DiskList.csv ./hdd_id.sh 1 endast enc_id=1, tab-separerade ./hdd_id.sh --csv 1 endast enc_id=1, skriv till - -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 "Ingen kapsling enc_id hittades."; 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 "Kapsling,Slot,Märke,Modell,Serienummer" > "$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 - Gör skriptet körbart:
chmod +x hdd_id.sh
- Kör skriptet vid behov:
./hdd_id.sh— Listar alla kapslingar, skriver ut tab-separerad data till terminalen../hdd_id.sh --csv— Listar alla kapslingar, skriver ut till en CSV-fil med namnet<HOST>-<YYYYMMDD>-DiskList.csv../hdd_id.sh 1— Listar endast kapsling medenc_id=1, tab-separerad../hdd_id.sh --csv 1— Listar endast kapslingenc_id=1, skriver ut till CSV.
- Exempel på utdata:
ENC_03TOSHIBAMC04ACA300E85G9XXXXFLVA ENC_06SeagateST8000VX010-2ZR188WPV0XYZZ ENC_07SeagateST8000VX010-2ZR188WPV0ZZZZ ENC_08SeagateST8000VX010-2ZR188WPVXXXR5 TR-004-N0011SeagateST4000NE001-2MA101WS24ZZZB TR-004-N0012SeagateST4000NE001-2MA101WS24XXXY
Varje rad innehåller: Kapslingsnamn,Fack,Märke,Modell,Serienummer.
- Ladda ner den exporterade filen (om du använder
--csv) från din NAS med File Station eller SMB/CIFS.
- Ladda ner eller skapa skriptet: Spara följande innehåll som