FAQ Jak mogę eksportować informacje o dysku twardym i obudowie z mojego NAS-a, używając skryptu?

QNAP

Bot
Management
29 Kwiecień 2013
2 108
34
88
Taipei
www.qnap.com
Odpowiednie produkty
NAS (QTS / QuTS Hero)



Scenariusz
Jeśli używasz QNAP NAS z jednostką rozszerzającą, możesz chcieć wyeksportować szczegółowe informacje o wszystkich zainstalowanych dyskach twardych — takie jak marka, model i numer seryjny — do celów dokumentacji lub inwentaryzacji. Chociaż te informacje są dostępne w interfejsie graficznym, zaawansowani użytkownicy mogą pobrać i wyeksportować te szczegóły dysków za pomocą wiersza poleceń przez FAQ SSH. Jest to przydatne do automatyzacji lub sporządzania spisu zasobów IT.



Procedura

  1. Włącz dostęp FAQ SSH na swoim QNAP NAS.
    Uwaga: Włączenie FAQ SSH może wiązać się z ryzykiem bezpieczeństwa. Upewnij się, że używasz silnych haseł i wyłącz FAQ SSH, gdy nie jest używane.
  2. Połącz się z NAS przez FAQ SSH za pomocą klienta FAQ SSH (takiego jak PuTTY lub Terminal).
  3. Użyj dostarczonego skryptu `hdd_id.sh` do eksportowania informacji o dyskach:
    • Pobierz lub utwórz skrypt: Zapisz następującą zawartość jako `hdd_id.sh` na swoim 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
    • Uczyń skrypt wykonywalnym:
      Kod:
      chmod +x hdd_id.sh
    • Uruchom skrypt według potrzeb:
      • `./hdd_id.sh` — Wyświetla wszystkie obudowy, wyprowadza dane rozdzielone tabulatorami do terminala.
      • `./hdd_id.sh --csv` — Wyświetla wszystkie obudowy, wyprowadza dane do pliku CSV o nazwie `<HOST>-<YYYYMMDD>-DiskList.csv`.
      • `./hdd_id.sh 1` — Wyświetla tylko obudowę z `enc_id=1`, rozdzielone tabulatorami.
      • `./hdd_id.sh --csv 1` — Wyświetla tylko obudowę `enc_id=1`, wyprowadza dane do 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żda linia zawiera: Nazwa obudowy, Slot, Marka, Model, Numer seryjny.
    • Pobierz wyeksportowany plik (jeśli użyto `--csv`) z NAS za pomocą File Station lub SMB/CIFS.



Dalsze czytanie