Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Définition des tables opérationnelles Junos PyEZ pour l’analyse de sorties non structurées

RÉSUMÉ Créez des tables personnalisées qui sélectionnent des données à partir de la sortie de la commande CLI ou vty pour extraire des informations opérationnelles d’un équipement Junos.

Tables opérationnelles (op) Junos PyEZ pour sortie non structurée extraient des données de la sortie texte d’une commande CLI exécutée sur un équipement Junos ou d’une commande vty exécutée sur un concentrateur PIC flexible (FPC) donné. Les données extraites sont ensuite converties en JSON. Cela vous permet de récupérer et d’analyser rapidement les informations d’état opérationnel de l’équipement. Les tables d’opération Junos PyEZ pour la sortie non structurée sont particulièrement utiles lorsque vous avez besoin d’analyser une sortie de commande qui ne peut pas être retournée dans un format structuré tel que XML.

Cette rubrique traite des différents composants de la table.

Récapitulatif des paramètres dans les tables op pour l’analyse de la sortie non structurée

Les tables Junos PyEZ sont mises en forme à l’aide de YAML. Les définitions de table peuvent inclure un certain nombre de paramètres obligatoires et facultatifs, qui sont résumés dans le tableau 1.

Tableau 1 : Paramètres dans les tables d’opérations Junos PyEZ pour la sortie non structurée

Nom du paramètre de la table

Paramètre de table

Description

Nom de la table

Identificateur défini par l’utilisateur pour la table.

Commande

command

CLI ou vty à exécuter.

Arguments de commande

args

(Facultatif) Lorsque vous définissez la commande en tant que modèle Jinja, args il s’agit d’un tableau associatif, ou dictionnaire, de paires clé-valeur qui mappe les variables du modèle de commande aux valeurs par défaut utilisées lors du rendu du modèle.

FPC cible

target

(Facultatif) Concentrateur PIC flexible (FPC) sur lequel exécuter une commande vty.

Élément de table

item

(Facultatif) Chaîne ou expression régulière qui définit comment diviser la sortie en sections. Ces sections deviennent la référence itérable de la vue associée.

Spécifiez '*' pour extraire et faire correspondre la chaîne entière plutôt que chaque ligne.

Clé de l’élément de table

key

(Facultatif) Chaîne ou liste de chaînes qui définissent une ou plusieurs clés qui identifient de manière unique chaque élément de la table.

Touches sélectionnées

key_items

(Facultatif) Liste d’une ou plusieurs clés d’élément de table pour lesquelles renvoyer des données.

Titre de la section

title

(Facultatif) Chaîne qui sélectionne la section de sortie contenant les données à analyser.

Délimiteur de champ

delimiter

(Facultatif) Délimiteur qui définit comment fractionner les données dans la sortie de commande composée de paires clé-valeur. Les données extraites sont stockées sous forme de paires clé-valeur dans un dictionnaire.

Expression d’évaluation

eval

(Facultatif) Tableau associatif, ou dictionnaire, d’une ou plusieurs paires clé-valeur qui mappent une clé définie par l’utilisateur à une chaîne contenant une expression mathématique. Lorsque vous récupérez les données, l’expression est évaluée à l’aide de la fonction Python eval . La clé et la valeur calculée sont ajoutées aux données finales renvoyées par la table et la vue.

Affichage du tableau

view

(Facultatif) Vue utilisée pour extraire les données de champ des éléments de la table.

Modèle TextFSM

use_textfsm

(Facultatif) Booléen qui spécifie si un modèle TextFSM est utilisé pour analyser les données.

Identificateur de plate-forme de modèle TextFSM

platform

(Facultatif) Lorsqu’un modèle TextFSM est utilisé, spécifiez la plate-forme du modèle.

Nom de la table

Le nom de la table est un identificateur défini par l’utilisateur pour la table. Le fichier ou la chaîne YAML peut contenir une ou plusieurs tables. Le début du document YAML doit être justifié à gauche. L’exemple suivant définit une table nommée ChassisFanTable:

Commande

Une table d’opération Junos PyEZ pour la sortie non structurée extrait les données de la sortie texte d’une commande CLI ou vty. Vous devez inclure la command propriété dans la définition Table pour spécifier la commande CLI à exécuter sur un périphérique ou la commande vty à exécuter sur un FPC donné. Vous pouvez définir la commande comme une simple chaîne ou un modèle Jinja.

Par exemple, le tableau suivant exécute la show chassis fan commande sur l’appareil.

Le tableau suivant exécute la show cmerror module brief commande vty sur le FPC cible.

Lorsque vous définissez la commande en tant que modèle Jinja, vous devez également fournir au args paramètre un dictionnaire de paires clé-valeur qui mappent les variables du modèle aux valeurs utilisées lors du rendu du modèle. Pour plus d’informations sur la définition de la commande en tant que modèle Jinja, consultez Arguments de commande (arguments).

Arguments de commande (args)

Vous pouvez définir la commande CLI ou vty pour le command paramètre à l’aide d’un modèle Jinja et remplacer les arguments de commande par des variables. Lorsque vous utilisez un modèle Jinja, vous devez également définir le args paramètre, qui est un dictionnaire de paires clé-valeur qui mappe les noms de variables dans le modèle Jinja aux valeurs utilisées lors du rendu du modèle. Vous pouvez fournir des valeurs par défaut pour les variables de modèle dans la définition de table, et vous pouvez également définir les valeurs dans l’application Junos PyEZ.

Pour définir des valeurs par défaut pour les variables de modèle, incluez le paramètre dans la définition de table args et mappez chaque variable de modèle à sa valeur par défaut. Le tableau suivant définit une commande à l’aide d’un modèle Jinja qui a une variable, protocol. Le args paramètre définit la valeur par défaut de protocol, qui est utilisée lorsque vous appelez la get() méthode dans votre script et ne fournit pas d’argument qui remplace cette valeur par défaut.

De plus, vous pouvez définir l’argument args en tant que dictionnaire dans la méthode Table get() pour :

  • définir une valeur pour toute variable de modèle qui n’a pas de valeur par défaut définie dans la table

  • remplacer la valeur par défaut définie dans la table pour une ou plusieurs variables de modèle

L'exemple suivant exécute la commande de la table précédente en utilisant le protocole 'bgp' au lieu de la valeur par défaut 'ospf'.

FPC cible (fpc)

Les tables d’opération Junos PyEZ peuvent exécuter des commandes vty sur un concentrateur PIC flexible (FPC) spécifique. Lorsque vous utilisez une commande vty, la table doit inclure le target paramètre permettant de définir le FPC cible. Vous pouvez définir target et Null forcer l’utilisateur à spécifier le FPC cible dans l’application, ou vous pouvez définir target un FPC par défaut, et l’utilisateur peut éventuellement remplacer cette valeur dans l’application.

Le tableau suivant exécute la show memory commande vty, mais définit target: Null, ce qui nécessite que l’utilisateur fournisse le FPC cible dans l’application Junos PyEZ :

Le tableau suivant exécute la show memory commande vty sur FPC 1, sauf si l’utilisateur remplace cette valeur dans l’application Junos PyEZ.

Dans l’application Junos PyEZ, pour définir le FPC cible ou remplacer le FPC par défaut défini dans la table, définissez l’argument de la target méthode de get() la table sur le FPC souhaité, par exemple :

Élément de table (élément)

La propriété facultative Table item est une chaîne ou une expression régulière qui définit comment fractionner la sortie de la commande pour l’analyse. Si la sortie contient des ensembles de données similaires et répétitifs, vous pouvez définir item une correspondance et extraire chaque itération des données. Par exemple, show interfaces renvoie un ensemble de données similaire pour de nombreuses interfaces. Vous pouvez également définir item: '*' le moment où vous devez extraire les données sous la forme d’un seul bloc de texte.

Considérez la sortie suivante pour la show devices local commande vty :

Le tableau suivant extrait chaque section de la sortie qui commence par TSEC Ethernet Device Driver:. Dans ce cas, la valeur de key: name est dérivée du groupe de capture dans l’expression régulière définie dans item.

Vous pouvez également définir item à l'aide d'un astérisque ('*') si vous souhaitez faire correspondre la section entière de la sortie au lieu de faire correspondre chaque ligne. Lorsque vous incluez item: '*', dans la plupart des cas, vous devez également inclure le title paramètre pour spécifier l’en-tête de la section de sortie à extraire. L’extraction de la sortie à l’aide de item: '*' est utile lorsque vous incluez le regex paramètre dans une vue et que vous souhaitez que chaque expression corresponde à l’intégralité de la chaîne de texte. Dans le cas contraire, les regex expressions sont combinées et mises en correspondance avec chaque ligne.

Le tableau suivant extrait le bloc de texte sous l’en-tête Receive: et compare chaque expression régulière à l’intégralité de la chaîne de texte :

Clé de l’élément de table (clé)

La propriété facultative key définit les champs en sortie qui sont utilisés pour identifier de manière unique un élément de table. Vous pouvez identifier un élément de table à l’aide d’une seule clé ou d’une liste de clés. Si la table et la vue renvoient des données itératives, la key valeur doit faire référence à un nom de variable ou de champ défini dans la vue.

Considérons le résultat suivant show chassis fan :

Le tableau suivant définit la clé d’élément de tableau comme fan-name, qui correspond à la valeur sous la Item colonne de la sortie.

Lorsque vous récupérez et imprimez les données dans l’application Junos PyEZ, chaque élément du dictionnaire résultant utilise la valeur de ce champ comme clé.

Vous pouvez également le définir key sous forme de liste pour identifier un élément de table à l’aide d’une clé composée. Par exemple :

Touches sélectionnées (key_items)

Le key paramètre définit les champs en sortie qui identifient de manière unique un élément de table. Lorsque vous incluez le key paramètre dans une table, vous pouvez utiliser le paramètre facultatif key_items pour renvoyer uniquement des données pour certaines valeurs de clé. key_items définit la clé ou la liste de clés des éléments de table pour lesquels récupérer des données. Vous pouvez définir le key_items paramètre dans la définition de table ou dans l’application Junos PyEZ.

Considérons le résultat suivant show chassis fan :

La table suivante définit la clé de l’élément de table en tant que fan-name et récupère uniquement les données de l’élément de table dont la valeur de clé est égale à Fan 1.

Dans l’application Junos PyEZ, pour définir le renvoi ou le key_items remplacement de ce qui est key_items défini dans la table, définissez l’argument key_items dans la méthode de la table sur une liste ou un tuple des éléments souhaités get() , par exemple :

Titre de la section (title)

Les tables peuvent inclure le paramètre facultatif title pour définir le point de départ d’une section dans la sortie de la commande à partir de laquelle extraire et analyser les données. Lorsque la table définit item: '*', vous devez inclure title pour spécifier l’en-tête de la section de sortie à extraire

Par exemple, considérez la sortie de commande suivante, qui est incluse dans un ensemble plus grand de sortie :

Le tableau suivant utilise le paramètre pour extraire et analyser les title données de la TSEC status counters section de la sortie. Dans ce cas, la table est définie item comme '*', ce qui considère les données comme une seule chaîne de texte.

Délimiteur de champ (délimiteur)

Certaines commandes opérationnelles renvoient une sortie composée uniquement de paires clé-valeur. Si vous souhaitez simplement récupérer l’ensemble des données et extraire chaque paire clé-valeur, vous pouvez utiliser le paramètre pour définir le delimiter mode de fractionnement de chaque paire de données au lieu de définir une vue distincte. Junos PyEZ utilise le délimiteur pour fractionner les données à la limite spécifiée et stocke chaque paire clé-valeur dans un dictionnaire.

Considérez la sortie suivante pour la show link stats commande vty.

Le tableau suivant définit le délimiteur comme étant le caractère deux-points (:) :

Lorsque vous récupérez les données dans l’application Junos PyEZ, la table fractionne chaque ligne de sortie au niveau du délimiteur et stocke les paires clé-valeur dans un dictionnaire.

Expression d’évaluation (eval)

Vous pouvez utiliser le paramètre facultatif eval pour ajouter ou modifier des paires clé-valeur dans les données finales renvoyées par la table et la vue. Le eval paramètre mappe un nom de clé à une chaîne contenant une expression mathématique qui est évaluée par la fonction Python eval . Vous pouvez inclure le paramètre dans les tables et les eval vues, et eval vous pouvez définir et calculer plusieurs valeurs.

Lorsque vous l’utilisez eval dans une table, elle fait référence au dictionnaire de données complet pour le calcul, et la clé et la valeur calculée sont ajoutées en tant qu’élément supplémentaire unique au dictionnaire. Lorsque vous l’utilisez eval dans une vue, l’expression est calculée à chaque itération des données et la valeur calculée est ajoutée aux données de cette itération. Si le nom de la eval clé correspond à une clé définie dans la vue, eval remplace la valeur de cette clé par la valeur calculée. Si le nom de la eval clé ne correspond pas à une clé définie dans la vue, eval ajoute la nouvelle clé et la nouvelle valeur calculée aux données.

L’expression eval peut faire référence au data dictionnaire renvoyé par la vue. L’expression doit être référencée data à l’aide d’une variable de modèle Jinja, afin que Junos PyEZ puisse remplacer la variable par le dictionnaire lors de l’évaluation de l’expression.

L’exemple suivant utilise eval dans la définition de table pour inclure une seule entrée supplémentaire dans le dictionnaire de données. La clé de l’élément ajouté est cchip_errors_from_lkup_chip, et sa valeur est la somme du nombre d’interruptions.

Vous pouvez également définir eval dans le tableau pour calculer et ajouter plusieurs paires clé-valeur, par exemple :

Pour plus d’informations sur l’utilisation eval dans une vue, reportez-vous à la section Expression d’évaluation (évaluation).

Vue tabulaire (vue)

La view propriété associe la définition de la table à une vue particulière. Une vue définit la manière dont la sortie de la table doit être analysée et mappe les noms de variables Python que vous avez définis par l’utilisateur aux champs de sortie des éléments de table sélectionnés. Vous pouvez personnaliser l’affichage pour ne sélectionner que certains champs dans les éléments de la table.

Si la sortie se compose uniquement de paires clé-valeur, vous pouvez utiliser le paramètre Table delimiter pour extraire les données et stocker les paires clé-valeur dans un dictionnaire. Dans ce cas, vous n’avez pas besoin de définir une vue distincte.

Modèles TextFSM (plate-forme et use_textfsm)

Les tables Junos PyEZ peuvent référencer un modèle TextFSM pour analyser la sortie des commandes des équipements Juniper Networks ou d’autres fournisseurs. Vous devez installer la ntc-templates bibliothèque sur votre serveur Junos PyEZ ou votre environnement virtuel afin d’utiliser les modèles TextFSM dans vos tables.

Pour utiliser un modèle TextFSM afin d’analyser la sortie de la commande, incluez-le use_textfsm: True dans la table. Vous pouvez utiliser un modèle TextFSM seul ou en conjonction avec une vue Junos PyEZ. Junos PyEZ utilise les platform valeurs et command pour déterminer le nom de fichier du modèle.

Par exemple, le tableau suivant utilise le modèle juniper_junos_show_arp_no-resolve.textfsm pour analyser la sortie de commande d’un périphérique Junos Juniper Networks :

Pour plus d’informations sur l’utilisation des tables Junos PyEZ avec des modèles TextFSM, consultez Utiliser des tables Junos PyEZ avec des modèles TextFSM.