Comment puis-je exporter les informations sur le disque dur et le boîtier de mon NAS à l'aide d'un script ?
Produits Applicables
NAS (QTS / QuTS hero)
Scénario
Si vous utilisez un NAS QNAP avec une unité d'extension, vous pouvez vouloir exporter des informations détaillées sur tous les disques durs installés—telles que la marque, le modèle et le numéro de série—pour la documentation ou l'inventaire. Bien que ces informations apparaissent dans l'interface graphique, les utilisateurs avancés peuvent récupérer et exporter ces détails de disque en utilisant la ligne de commande via SSH. Cela est utile pour l'automatisation ou pour faire l'inventaire de vos actifs informatiques.
Procédure
- Activez l'accès SSH sur votre NAS QNAP.
Remarque : Activer SSH peut introduire des risques de sécurité. Assurez-vous d'utiliser des mots de passe forts et désactivez SSH lorsque vous ne l'utilisez pas. - Connectez-vous à votre NAS via SSHen utilisant un client SSH (tel que PuTTY ou Terminal).
- Utilisez le
hdd_id.sh
script pour exporter les informations sur les disques :- Téléchargez ou créez le script :Enregistrez le contenu suivant sous
hdd_id.sh
sur votre NAS :#!/bin/sh # Utilisation : ./hdd_id.sh tous les boîtiers, séparés par des tabulations (vers stdout) ./hdd_id.sh --csv tous les boîtiers, écrire dans
- -DiskList.csv ./hdd_id.sh 1 seulement enc_id=1, séparés par des tabulations ./hdd_id.sh --csv 1 seulement enc_id=1, écrire dans - -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 "Aucun enc_id de boîtier trouvé."; 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 "Boîtier,Emplacement,Marque,Modèle,Série" > "$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 - Rendre le script exécutable :
chmod +x hdd_id.sh
- Exécutez le script selon vos besoins :
./hdd_id.sh
— Liste tous les boîtiers, affiche les données séparées par des tabulations dans le terminal../hdd_id.sh --csv
— Liste tous les boîtiers, exporte vers un fichier CSV nommé<HOST>-<YYYYMMDD>-DiskList.csv.
./hdd_id.sh 1
— Liste uniquement le boîtier avecenc_id=1
, séparé par des tabulations../hdd_id.sh --csv 1
— Liste uniquement le boîtierenc_id=1
, exporte vers CSV.
- Exemple de sortie :
ENC_03TOSHIBAMC04ACA300E85G9XXXXFLVA ENC_06SeagateST8000VX010-2ZR188WPV0XYZZ ENC_07SeagateST8000VX010-2ZR188WPV0ZZZZ ENC_08SeagateST8000VX010-2ZR188WPVXXXR5 TR-004-N0011SeagateST4000NE001-2MA101WS24ZZZB TR-004-N0012SeagateST4000NE001-2MA101WS24XXXY
Chaque ligne contient :Nom du boîtier,Emplacement,Marque,Modèle,Série.
- Téléchargez le fichier exporté(si vous utilisez
--csv
) depuis votre NAS en utilisant File Station ou SMB/CIFS.
- Téléchargez ou créez le script :Enregistrez le contenu suivant sous