Hoe exporteer ik harde schijf- en behuizingsinformatie van mijn NAS met behulp van een script?
Toepasselijke producten
NAS (QTS / QuTS hero)
Scenario
Als je een QNAP NAS met een uitbreidingsunit gebruikt, wil je misschien gedetailleerde informatie over alle geïnstalleerde harde schijven exporteren, zoals merk, model en serienummer, voor documentatie of inventarisatie. Hoewel deze informatie in de grafische interface verschijnt, kunnen gevorderde gebruikers deze schijfgegevens ophalen en exporteren via de opdrachtregel via SSH. Dit is nuttig voor automatisering of om een inventaris van je IT-middelen te maken.
Procedure
- Schakel SSH-toegang in op je QNAP NAS.
Opmerking: Het inschakelen van SSH kan beveiligingsrisico's met zich meebrengen. Zorg ervoor dat je sterke wachtwoorden gebruikt en schakel SSH uit wanneer het niet in gebruik is. - Verbind met je NAS via SSHmet een SSH-client (zoals PuTTY of Terminal).
- Gebruik de meegeleverde
hdd_id.sh
script om schijfinformatie te exporteren:- Download of maak het script:Sla de volgende inhoud op als
hdd_id.sh
op uw NAS:#!/bin/sh # Gebruik: ./hdd_id.sh alle behuizingen, tab-gescheiden (naar stdout) ./hdd_id.sh --csv alle behuizingen, schrijf naar
- -DiskList.csv ./hdd_id.sh 1 alleen enc_id=1, tab-gescheiden ./hdd_id.sh --csv 1 alleen enc_id=1, schrijf naar - -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 "Geen behuizing enc_id gevonden."; 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 "Behuizing,Slot,Merk,Model,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 - Maak het script uitvoerbaar:
chmod +x hdd_id.sh
- Voer het script uit indien nodig:
./hdd_id.sh
— Lijst alle behuizingen, output tab-gescheiden gegevens naar de terminal../hdd_id.sh --csv
— Lijst alle behuizingen, output naar een CSV-bestand genaamd<HOST>-<YYYYMMDD>-DiskList.csv.
./hdd_id.sh 1
— Lijst alleen behuizing metenc_id=1
, tab-gescheiden../hdd_id.sh --csv 1
— Lijst alleen behuizingenc_id=1
, output naar CSV.
- Voorbeeld output:
ENC_03TOSHIBAMC04ACA300E85G9XXXXFLVA ENC_06SeagateST8000VX010-2ZR188WPV0XYZZ ENC_07SeagateST8000VX010-2ZR188WPV0ZZZZ ENC_08SeagateST8000VX010-2ZR188WPVXXXR5 TR-004-N0011SeagateST4000NE001-2MA101WS24ZZZB TR-004-N0012SeagateST4000NE001-2MA101WS24XXXY
Elke regel bevat:Behuizingsnaam,Slot,Merk,Model,Serienummer.
- Download het geëxporteerde bestand(bij gebruik van
--csv
) van je NAS met File Station of SMB/CIFS.
- Download of maak het script:Sla de volgende inhoud op als