Wie exportiere ich Informationen über Festplatten und Gehäuse von meinem NAS mithilfe eines Skripts?
Anwendbare Produkte
NAS (QTS / QuTS hero)
Szenario
Wenn Sie ein QNAP NAS mit einer Erweiterungseinheit verwenden, möchten Sie möglicherweise detaillierte Informationen über alle installierten Festplatten—wie Marke, Modell und Seriennummer—für Dokumentation oder Inventarisierung exportieren. Obwohl diese Informationen in der grafischen Oberfläche erscheinen, können fortgeschrittene Benutzer diese Festplattendetails über die Kommandozeile via SSH abrufen und exportieren. Dies ist hilfreich für die Automatisierung oder zur Inventarisierung Ihrer IT-Assets.
Verfahren
- SSH-Zugriff aktivieren auf Ihrem QNAP NAS.
Hinweis: Das Aktivieren von SSH kann Sicherheitsrisiken mit sich bringen. Stellen Sie sicher, dass Sie starke Passwörter verwenden und deaktivieren Sie SSH, wenn es nicht verwendet wird. - Verbinden Sie sich über SSH mit Ihrem NASunter Verwendung eines SSH-Clients (wie PuTTY oder Terminal).
- Verwenden Sie das bereitgestellte
hdd_id.sh
Skript, um Festplatteninformationen zu exportieren:- Laden Sie das Skript herunter oder erstellen Sie es:Speichern Sie den folgenden Inhalt als
hdd_id.sh
auf Ihrem NAS:#!/bin/sh # Verwendung: ./hdd_id.sh alle Gehäuse, tab-getrennt (zu stdout) ./hdd_id.sh --csv alle Gehäuse, schreiben zu
- -DiskList.csv ./hdd_id.sh 1 nur enc_id=1, tab-getrennt ./hdd_id.sh --csv 1 nur enc_id=1, schreiben zu - -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 "Kein Gehäuse enc_id gefunden."; 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 "Gehäuse,Slot,Marke,Modell,Seriennummer" > "$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 - Machen Sie das Skript ausführbar:
chmod +x hdd_id.sh
- Führen Sie das Skript nach Bedarf aus:
./hdd_id.sh
— Listet alle Gehäuse auf, gibt tabulatorgetrennte Daten im Terminal aus../hdd_id.sh --csv
— Listet alle Gehäuse auf, gibt in eine CSV-Datei aus, die<HOST>-<YYYYMMDD>-DiskList.csv heißt.
./hdd_id.sh 1
— Listet nur das Gehäuse mitenc_id=1
, tabulatorgetrennt../hdd_id.sh --csv 1
— Listet nur das Gehäuseenc_id=1
, gibt in CSV aus.
- Beispielausgabe:
ENC_03TOSHIBAMC04ACA300E85G9XXXXFLVA ENC_06SeagateST8000VX010-2ZR188WPV0XYZZ ENC_07SeagateST8000VX010-2ZR188WPV0ZZZZ ENC_08SeagateST8000VX010-2ZR188WPVXXXR5 TR-004-N0011SeagateST4000NE001-2MA101WS24ZZZB TR-004-N0012SeagateST4000NE001-2MA101WS24XXXY
Jede Zeile enthält:Gehäusename,Slot,Marke,Modell,Seriennummer.
- Laden Sie die exportierte Datei herunter(wenn Sie
--csv
) von Ihrem NAS mit File Station oder SMB/CIFS.
- Laden Sie das Skript herunter oder erstellen Sie es:Speichern Sie den folgenden Inhalt als