Ce contenu est traduit automatiquement. Veuillez consulter la Clause de non-responsabilité relative à la traduction automatique.
Overschakelen naar Engels

How do I export hard disk and enclosure information from my NAS using a script?
Comment puis-je exporter les informations sur le disque dur et le boîtier de mon NAS à l'aide d'un script ?


Date de la dernière modification : 2025-09-17

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

  1. 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.
  2. Connectez-vous à votre NAS via SSHen utilisant un client SSH (tel que PuTTY ou Terminal).
  3. Utilisez lehdd_id.shscript pour exporter les informations sur les disques :
    • Téléchargez ou créez le script :Enregistrez le contenu suivant soushdd_id.shsur 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.



Pour en savoir plus

Est-ce que cet article a été utile ?

Merci pour votre commentaire.

Veuillez nous indiquer comment améliorer cet article :

Si vous souhaitez fournir un commentaire supplémentaire, veuillez l’inclure ci-dessous.

Choisissez une spécification

      En voir davantage Moins

      Ce site est disponible dans d'autres pays/régions :

      open menu
      back to top