NAS (QTS / QuTS Hero)
Jeśli używasz serwera NAS QNAP z jednostką rozszerzającą, możesz chcieć wyeksportować szczegółowe informacje o wszystkich zainstalowanych dyskach twardych — takie jak marka, model i numer seryjny — na potrzeby dokumentacji lub inwentaryzacji. Choć informacje te są widoczne w interfejsie graficznym, zaawansowani użytkownicy mogą pobrać i wyeksportować te szczegóły dotyczące dysków za pomocą wiersza poleceń przez SSH. Jest to przydatne do automatyzacji lub do inwentaryzacji zasobów IT.
Scenariusz
Jeśli używasz serwera NAS QNAP z jednostką rozszerzającą, możesz chcieć wyeksportować szczegółowe informacje o wszystkich zainstalowanych dyskach twardych — takie jak marka, model i numer seryjny — na potrzeby dokumentacji lub inwentaryzacji. Choć informacje te są widoczne w interfejsie graficznym, zaawansowani użytkownicy mogą pobrać i wyeksportować te szczegóły dotyczące dysków za pomocą wiersza poleceń przez SSH. Jest to przydatne do automatyzacji lub do inwentaryzacji zasobów IT.
Procedura
- Włącz dostęp SSH na serwerze NAS QNAP.
Uwaga: Włączenie SSH może wprowadzić zagrożenia bezpieczeństwa. Upewnij się, że używasz silnych haseł i wyłączasz SSH, gdy nie jest używane. - Połącz się z serwerem NAS przez SSH przy użyciu klienta SSH (takiego jak PuTTY lub Terminal).
- Użyj dostarczonego skryptu
hdd_id.sh, aby wyeksportować informacje o dyskach:- Pobierz lub utwórz skrypt: Zapisz następującą zawartość jako
hdd_id.shna serwerze NAS:
Kod:#!/bin/sh # Usage: # ./hdd_id.sh # all enclosures, tab-separated (to stdout) # ./hdd_id.sh --csv # all enclosures, write to <HOST>-<YYYYMMDD>-DiskList.csv # ./hdd_id.sh 1 # only enc_id=1, tab-separated # ./hdd_id.sh --csv 1 # only enc_id=1, write to <HOST>-<YYYYMMDD>-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 "No enclosure enc_id found."; 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 - Nadaj skryptowi uprawnienia do wykonywania:
Kod:chmod +x hdd_id.sh - Uruchom skrypt w zależności od potrzeb:
./hdd_id.sh— Wyświetla listę wszystkich obudów, wyprowadza dane rozdzielone tabulatorami do terminala../hdd_id.sh --csv— Wyświetla listę wszystkich obudów, zapisuje dane do pliku CSV o nazwie<HOST>-<YYYYMMDD>-DiskList.csv../hdd_id.sh 1— Wyświetla tylko obudowę oenc_id=1, rozdzieloną tabulatorami../hdd_id.sh --csv 1— Wyświetla tylko obudowęenc_id=1, zapisuje dane do pliku CSV.
- Przykładowy wynik:
Kod:ENC_0 3 TOSHIBA MC04ACA300E 85G9XXXXFLVA ENC_0 6 Seagate ST8000VX010-2ZR188 WPV0XYZZ ENC_0 7 Seagate ST8000VX010-2ZR188 WPV0ZZZZ ENC_0 8 Seagate ST8000VX010-2ZR188 WPVXXXR5 TR-004-N001 1 Seagate ST4000NE001-2MA101 WS24ZZZB TR-004-N001 2 Seagate ST4000NE001-2MA101 WS24XXXY
Każdy wiersz zawiera: Nazwa obudowy, Slot, Marka, Model, Numer seryjny. - Pobierz wyeksportowany plik (jeśli używasz
--csv) z serwera NAS za pomocą File Station lub SMB/CIFS.
- Pobierz lub utwórz skrypt: Zapisz następującą zawartość jako