NAS'ımdan bir script kullanarak hard disk ve muhafaza bilgilerini nasıl dışa aktarırım?
Geçerli Ürünler
NAS (QTS / QuTS hero)
Senaryo
Bir genişletme birimi ile birlikte bir QNAP NAS kullanıyorsanız, belgeler veya envanter için markası, modeli ve seri numarası gibi tüm yüklü sabit disklerin ayrıntılı bilgilerini dışa aktarmak isteyebilirsiniz. Bu bilgiler grafik arayüzde görünse de, ileri düzey kullanıcılar SSH üzerinden komut satırını kullanarak bu disk ayrıntılarını alabilir ve dışa aktarabilir. Bu, otomasyon veya BT varlıklarınızın envanterini almak için faydalıdır.
Prosedür
- QNAP NAS'ınızda SSH erişimini etkinleştirin.
Not: SSH'yi etkinleştirmek güvenlik riskleri oluşturabilir. Güçlü parolalar kullandığınızdan emin olun ve kullanılmadığında SSH'yi devre dışı bırakın. - NAS'ınıza SSH üzerinden bağlanınbir SSH istemcisi (örneğin PuTTY veya Terminal) kullanarak.
- Sağlanan
hdd_id.sh
disk bilgilerini dışa aktarmak için betiği kullanın:- Betik indirin veya oluşturun:Aşağıdaki içeriği olarak kaydedin
hdd_id.sh
NAS'ınızda:#!/bin/sh # Kullanım: ./hdd_id.sh tüm kasalar, tab ile ayrılmış (stdout'a) ./hdd_id.sh --csv tüm kasalar,
- -DiskList.csv dosyasına yaz ./hdd_id.sh 1 sadece enc_id=1, tab ile ayrılmış ./hdd_id.sh --csv 1 sadece enc_id=1, - -DiskList.csv dosyasına yaz 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 "Kasa enc_id bulunamadı."; 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 "Kasa,Yuva,Marka,Model,Seri" > "$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 - Betiği çalıştırılabilir yapın:
chmod +x hdd_id.sh
- Gerektiği şekilde scripti çalıştırın:
./hdd_id.sh
— Tüm kabinleri listeler, sekmeyle ayrılmış verileri terminale çıktılar../hdd_id.sh --csv
— Tüm kabinleri listeler, adında bir CSV dosyasına çıktılar<HOST>-<YYYYMMDD>-DiskList.csv.
./hdd_id.sh 1
— Sadece şu kabini listelerenc_id=1
, sekmeyle ayrılmış../hdd_id.sh --csv 1
— Sadece şu kabini listelerenc_id=1
, CSV'ye çıktılar.
- Örnek çıktı:
ENC_03TOSHIBAMC04ACA300E85G9XXXXFLVA ENC_06SeagateST8000VX010-2ZR188WPV0XYZZ ENC_07SeagateST8000VX010-2ZR188WPV0ZZZZ ENC_08SeagateST8000VX010-2ZR188WPVXXXR5 TR-004-N0011SeagateST4000NE001-2MA101WS24ZZZB TR-004-N0012SeagateST4000NE001-2MA101WS24XXXY
Her satır şunları içerir:Kabin Adı,Yuva,Marka,Model,Seri.
- Dışa aktarılan dosyayı indirin(eğer kullanıyorsanız
--csv
) NAS'ınızdan File Station veya SMB/CIFS kullanarak.
- Betik indirin veya oluşturun:Aşağıdaki içeriği olarak kaydedin