La boîte à Tutoriels de Christopher PECAUD

Obtenir des informations sur un NAS QNAP en utilisant le module QNAPstats avec Python

Laisser un commentaire

SOMMAIRE

I Introduction
II Installation du module
III Utilisation du module QNAPStats
IV Conclusion

I Introduction

Dans ce tutoriel nous allons voir comment récupérer des informations de fonctionnement sur un NAS QNAP en utilisant le module QNAPStats. Nous verrons comment installer ce module. Puis ensuite nous aborderons les fonctions fournies par ce module.

II Installation du module

L’installation de ce module se fait par une ligne de commande en utilisant l’outil de fourniture de paquets en ligne de commande pip :

Pip install qnapstats

Une fois installé le module est prêt à être utilisé.

III Utilisation du module QNAPStats

Dans un premier temps il faut déclarer l’importation du module dans votre fichier python de la manière suivante :

From qnapstats import QNAPStats

Ensuite il suffit de créer une instance de classe QNAPStats dont le constructeur prend en arguments les éléments suivants :

  • L’adresse IP du NAS ;
  • Le port de connexion ;
  • Le login ;
  • Et le mot de passe.

Voici la ligne de commande typique permettant d’effectuer cette opération :

qnap = QNAPStats(IPAdress, TCPport, login, password)

Vous devez tout de même utiliser un utilisateur qui appartient bien au groupe admin du NAS QNAP.

La classe QNAPStats met à notre disposition une série de fonctions qui permettent de récupérer différents groupes de valeur :

  • Get_system_stats permet d’obtenir des informations sur le NAS comme son nom, son modèle, la version du firmware installée, la durée d’utilisation depuis le dernier démarrage, les différentes connexions réseaux, etc… ;
  • Get_system_health permet d’obtenir la santé du NAS, elle retourne une chaîne de caractères ;
  • Get_volumes permet d’obtenir la liste des volumes hébergés par le NAS ainsi que la taille, ainsi que tous les dossiers partagés créés sur ce NAS ;
  • Get_smart_disk_health permet de lister les disques contenus dans le NAS et de savoir si chacun d’eux fonctionnent correctement, elle permet d’obtenir de même des informations utiles comme le nom, la marque, le type de disque dur (hdd ou ssd) ;
  • Get_bandwidth permet d’obtenir des informations concernant la bande passante utilisée à un instant donné par le NAS.

Nous avons vu les différentes fonctions nous permettant de récupérer toutes les informations nécessaires concernant le NAS. Encore faut-il pouvoir les lire car les types de données retournées sont assez complexes et retourne un sous-ensemble de plusieurs types différents.

Pour ce faire j’ai écrit une petite fonction nommée get_values() qui permet de lire dans sa globalité chaque données retournées.

Elle prend en paramètre l’ensemble de données retourné par l’une des fonctions vues précédemment.

C’est une fonction récursive qui permet de visualiser les données sur plusieurs niveaux.

Elle permet d’itérer chaque ensemble de données retourné et d’en extraire les données en fonction du type de données.

On commence par déterminer le type de l’ensemble de données pour savoir s’il s’agit d’une liste ao d’un dictionnaire grâce à la fonction isinstance :

if isinstance(d, dict):

    …

if isinstance(d, list):

    …

if isinstance(d,int):

   …

if isinstance(d,str):

Si c’est un dictionnaire on itère chaque clé valeur au sein du dictionnaire. On rappelle ensuite la fonction avec les valeurs retournées. Sinon si c’est une liste on itère chaque élément de la liste. Si c’est un entier ou une chaîne de caractère on peut traiter la donnée immédiatement. Tous les résultats sont affichés dans la console.

Voici le code de la fonction dans son intégralité :

def get_values(d):

    if isinstance(d, dict):

        for cle, valeurs in d.items():

            print(cle)

            get_values(valeurs)

    if isinstance(d, list):

        for valeur in d:

            if isinstance(valeur, str):

                print(valeur)

            else: 

                get_values(valeur)  

    if isinstance(d,int):

        print(str(d))      

    if isinstance(d,str):

        print(d)

Voici le code complet du code :

from qnapstats import QNAPStats

from pprint import pprint



def get_values(d):

    if isinstance(d, dict):

        for cle, valeurs in d.items():

            print(cle)

            get_values(valeurs)

    if isinstance(d, list):

        for valeur in d:

            if isinstance(valeur, str):

                print(valeur)

            else: 

                get_values(valeur)  

    if isinstance(d,int):

        print(str(d))      

    if isinstance(d,str):

        print(d)



if __name__ == '__main__':



    qnap = QNAPStats('192.168.0.100', 8080, 'admin', 'Tan3X=60@')

    print("__________Informations sur le NAS__________")



    system_stats = qnap.get_system_stats()

    get_values(system_stats)

    print("__________Différents status du NAS__________")

    health_stats = qnap.get_system_health()

    #get_values(health_stats)

    print(health_stats)

    print("__________Informations sur les volumes et les dossiers partagés__________")

    volumes = qnap.get_volumes()

    get_values(volumes)

    print("__________Informations sur les disques__________")

    disks = qnap.get_smart_disk_health()

    get_values(disks)

    print("__________Informations sur la bande passante__________")

    bandwidth = qnap.get_bandwidth()

    get_values(bandwidth)

IV Conclusion

Nous avons vu par l’intermédiaire de ce tutoriel qu’il était assez simple d’obtenir des informations concernant son NAS QNAP en utilisant le module qnapstats avec le langage Python.

blog comments powered by Disqus
RapidWeaver Icon

Made in RapidWeaver