Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Utiliser des tables et des vues opérationnelles Junos PyEZ qui analysent les résultats structurés

Les tables opérationnelles (op) Junos PyEZ pour les sorties structurées extraient des données spécifiques à partir de la sortie XML d’un RPC exécuté sur un équipement Junos. Après avoir chargé ou importé la définition de la table dans votre module Python, vous pouvez récupérer les éléments de la table et extraire et manipuler les données.

Pour récupérer des informations à partir d’un équipement spécifique, vous devez créer une instance table et l’associer à l’objet Device représentant l’équipement cible. Par exemple :

Les sections suivantes expliquent comment récupérer et manipuler les données :

Récupérer des éléments de table

La propriété Table item détermine quels éléments sont extraits de la sortie de commande opérationnelle. Par exemple, la définition Junos PyEZ EthPortTable, incluse ici pour référence, exécute la show interfaces "[afgxe][et]-*" media commande par défaut et extrait les physical-interface éléments de la sortie.

Vous récupérez les éléments table de votre script Python en appelant la get() méthode et en fournissant les arguments souhaités. Si la définition de la table inclut des arguments par défaut dans la args propriété, le RPC exécuté inclut automatiquement ces arguments lorsque vous appelez get() , à moins que vous ne les remplacez dans votre liste d’arguments.

Pour récupérer tous les éléments de table, appelez la get() méthode avec une liste d’arguments vide.

Vous pouvez également récupérer des éléments de table spécifiques en passant des options de commande comme arguments à la get() méthode. Si l’option de commande est un indicateur qui ne prend pas de valeur, définissez l’option sur True dans la liste d’arguments. Sinon, incluez l’argument et la valeur souhaitée en tant que paire clé-valeur dans la liste d’arguments. Vous pouvez examiner les arguments possibles pour les commandes opérationnelles dans l’interface CLI Junos.

Par défaut, EthPortTable renvoie des informations pour les interfaces Ethernet dont le nom correspond à l’expression "[afgxe][et]-*". Pour récupérer l’élément Table pour l’interface ge-0/3/0 uniquement, incluez interface_name='ge-0/3/0' comme argument à get().

Note:

Si le nom de l’option dans l’interface de ligne de commande (CLI) Junos OS est trait d’union, vous devez remplacer les tirets du nom en traits de soulignement. La valeur de l’argument, cependant, est une chaîne et peut donc contenir des traits d’union.

Si la commande CLI prend un premier argument facultatif qui ne vous oblige pas à spécifier explicitement un nom d’option ou un mot-clé, vous pouvez omettre le nom de l’option dans la liste d’arguments de méthode get() à condition que la propriété Table args_key fasse référence à cet argument. Dans l’exemple suivant, la commande prend le show interfaces nom d’une interface comme argument facultatif :

La propriété de définition args_key EthPortTable définit l’argument facultatif comme interface_name, ce qui vous permet d’utiliser cet argument sans avoir à spécifier explicitement le nom de l’option dans la liste d’arguments de méthode get() .

Par défaut, Junos PyEZ normalise toutes les clés et valeurs op Table, ce qui supprime tous les espaces blancs de direction et de suivi et remplace les séquences de caractères d’espace blanc internes par un seul espace. Pour désactiver la normalisation, incluez normalize=False comme argument à la get() méthode.

Éléments de table d’accès

Une fois que vous avez récupéré les éléments de la table, vous pouvez les traiter comme un dictionnaire Python, ce qui vous permet d’utiliser des méthodes dans la bibliothèque Python standard pour accéder et manipuler les éléments.

Pour afficher la liste des clés de dictionnaire correspondant aux noms des éléments de la table, appelez la keys() méthode.

Dans ce cas, il n’y a qu’une seule clé.

Vous pouvez vérifier qu’une clé spécifique est présente dans les éléments de la table à l’aide de l’opérateur Python in .

Pour afficher la liste des champs ou des valeurs associés à chaque clé, appelez la values() méthode. La values() méthode renvoie une liste de tuples avec les paires nom-valeur pour chaque champ défini dans la vue.

Pour consulter la liste complète des éléments, y compris les clés et les valeurs, appelez la items() méthode.

Comment itérer à travers une table

Les tables prennent en charge l’itération, ce qui vous permet d’effectuer une boucle à travers chaque élément de table de la même manière que vous le feriez pour une liste ou un dictionnaire. Il est ainsi facile de mettre en forme et d’imprimer rapidement les champs souhaités.

La définition EthPortTable, incluse dans le jnpr.junos.op module, exécute la show interfaces "[afgxe][et]-*" media commande et extrait les physical-interface éléments de la sortie. Le code suivant passe en boucle à travers les physical-interface éléments et imprime le nom et l’état opérationnel de chaque port Ethernet :

Le oper champ, défini dans EthPortView, correspond à la valeur de l’élément oper-status dans la sortie. La définition EthPortView ne définit pas un name champ. Par défaut, chaque élément View possède une name propriété qui fait référence à la clé qui identifie cet élément de manière unique.

Le résultat inclut le nom de l’interface et l’état opérationnel.