Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Afficher les options de commande valides et les valeurs de l’énoncé de configuration dans l’interface cli pour les modules YANG personnalisés

Certains équipements Junos vous permettent de charger des modules YANG personnalisés sur l’équipement pour ajouter des modèles de données qui ne sont pas pris en charge nativement par Junos OS. Lorsque vous ajoutez des modèles de données YANG personnalisés à un équipement, vous devez également fournir un script d’action ou de traduction qui gère la logique de traduction entre le modèle de données YANG et Junos OS. Bien que la logique de script puisse s’assurer qu’un utilisateur fournit des valeurs valides pour une option de commande ou une instruction de configuration donnée, cette logique n’est pas toujours transparente pour l’utilisateur. À partir de la version 19.2R1 de Junos OS, l’interface cli affiche l’ensemble des valeurs possibles pour certaines options de commande ou déclarations de configuration dans un modèle de données YANG personnalisé lorsque vous incluez l’instruction action-expand d’extension dans l’option ou la définition de l’instruction et que vous référencez un script qui gère la logique.

Comprendre l’aide contextuelle pour les modules YANG personnalisés

La CLI Junos fournit une aide contextuelle chaque fois que vous saisissez un point d’interrogation (?) en mode opérationnel ou de configuration. Lorsque vous exécutez une commande ou configurez une instruction, l’aide contextuelle de l’interface cli affiche les options et les valeurs d’option valides pour une commande, ou les déclarations de configuration valides et les valeurs d’instruction de branche dans la hiérarchie d’instructions de configuration. En outre, une aide contextuelle indique les remplissages possibles pour les noms d’options, les noms d’instruction et leurs valeurs incomplets.

L’interface CLI peut également afficher les valeurs valables pour certaines options de commande ou instructions de configuration dans un modèle de données YANG personnalisé. La CLI peut afficher toutes les valeurs possibles ou un sous-ensemble de valeurs qui correspondent sur une entrée partielle de l’utilisateur. Par exemple :

Pour afficher l’ensemble de valeurs valides pour une option de commande ou une déclaration de configuration donnée dans un module YANG personnalisé :

  1. Définissez les action-expand déclarations et script d’extension sous le paramètre d’entrée ou l’énoncé de configuration approprié dans le module YANG, comme décrit dans la section Définition du module YANG.

  2. Créez un script Python qui vérifie les entrées de l’utilisateur, calcule les valeurs possibles de l’option de commande ou de l’instruction de configuration et envoie la sortie appropriée à la CLI, comme décrit dans Création du script d’extension CLI.

    Note:

    Le script d’extension CLI affiche uniquement les valeurs valides dans l’interface cli. Le script de traduction ou le script d’action du module doit toujours inclure la logique qui garantit que seules les valeurs valides sont acceptées et traitées.

  3. Chargez le module YANG, les scripts de traduction ou d’action et le script d’extension CLI dans le cadre d’un package YANG personnalisé sur l’équipement, comme décrit dans la section Chargement du package YANG.

    Note:

    Les équipements Junos traitent les scripts d’extension CLI comme un autre type de script d’action, mais nous faisons référence au script d’extension CLI pour éviter toute confusion.

Définition du module YANG

Pour définir un module YANG personnalisé qui affiche l’ensemble des valeurs valides pour une option de commande ou une déclaration de configuration donnée lorsque l’utilisateur demande une aide contextuelle dans la CLI, votre module doit :

  1. Importez le module d’extensions DDL Junos OS.
  2. Incluez l’instruction d’extension action-expand et script la sous-état dans l’option de commande ou la définition de l’instruction de configuration correspondante.
    • Vous pouvez inclure l’instruction action-expand dans une instruction dans des leaf modules qui définissent des RPC personnalisés et dans une ou leaf-list une instruction dans des leaf modules qui définissent des hiérarchies de configuration personnalisées.

    • Vous ne pouvez définir qu’une seule action-expand instruction pour un nœud donné.

    • L’instruction script doit faire référence au script Python qui définit votre logique personnalisée.

Par exemple, dans le module suivant, le RPC définit le hostip paramètre d’entrée, qui appelle le hostip-expand.py script Python lorsque l’utilisateur demande une aide contextuelle pour l’argument hostip dans la CLI. Le script implémente la logique personnalisée qui affiche les valeurs valides pour cet argument dans l’interface cli.

Création du script d’extension CLI

Lorsque vous définissez l’instruction et script la action-expand sous-déclaration d’une option de commande ou d’une déclaration de configuration dans un module YANG personnalisé et que vous demandez une aide contextuelle pour cette option ou cette valeur d’instruction dans l’interface de ligne de commande, l’équipement appelle le script Python référencé. Le script doit contenir la logique personnalisée qui calcule et affiche toutes les valeurs possibles pour ce paramètre ou affiche un sous-ensemble de valeurs qui correspondent à l’entrée partielle de l’utilisateur.

Par exemple, la commande suivante doit afficher toutes les valeurs valides pour l’argument hostip :

Et la commande suivante doit afficher toutes les valeurs valides commençant par « 198 » :

Pour afficher les valeurs valides d’une option de commande ou d’une déclaration de configuration dans l’interface cli, le script Python doit exécuter les fonctions suivantes :

  1. Importez la jcs bibliothèque ainsi que toutes les autres bibliothèques Python requises.

  2. Récupérez et traitez n’importe quelle entrée utilisateur.

    Si vous spécifiez une entrée partielle pour une option ou une valeur d’instruction dans l’interface cli, les arguments de ligne de commande du script incluent l’argument symbol , qui est une chaîne contenant l’entrée utilisateur.

    Note:

    À partir de Junos OS version 21.2R1 et Junos OS Evolved version 21.2R1, les arguments de ligne de commande du script incluent l’argument à la --symbol place de l’argument symbol .

  3. Définissez ou calculez les valeurs valides pour le paramètre.

  4. Appelez la jcs.expand() fonction pour chaque valeur à afficher sur la ligne de commande.

Le script doit appeler la jcs:expand() fonction pour chaque option ou valeur d’instruction à afficher dans la CLI. La syntaxe de la jcs:expand() fonction est :

Où:

value

Chaîne définissant une valeur valide pour l’option de commande ou l’instruction de configuration donnée.

description

Chaîne qui décrit la valeur.

units

(Facultatif) Chaîne qui définit les unités pour la valeur correspondante.

range

(Facultatif) Chaîne qui définit la plage de la valeur correspondante.

Pour chaque appel à la jcs.expand() fonction, le script émet la valeur, la description, les unités et la plage qui sont fournies dans les arguments de la fonction dans la CLI. Par exemple, à l’appel jcs.expand() suivant dans le script :

La sortie CLI correspondante est :

Les exemples de scripts suivants vérifient d’abord la présence des arguments de symbol ligne de commande du script et, le cas échéant, définissent la variable correspondante égale à l’entrée de l’utilisateur. Les scripts calculent ensuite l’ensemble des valeurs valides pour le paramètre en fonction de l’entrée de l’utilisateur. Enfin, les scripts appellent la jcs.expand() fonction pour chaque valeur à afficher dans la CLI.

Nous fournissons deux versions du script, qui gèrent correctement l’argument du symbol script pour les différentes versions. L’exemple de script suivant, valable sur les équipements exécutant Junos OS version 21.2R1 ou ultérieure, utilise la argparse bibliothèque pour analyser l’argument --symbol .

De même, l’exemple de script suivant, qui est valable sur les équipements exécutant Junos OS version 21.1 ou antérieure, vérifie symbol si dans la sys.argv liste.

Le script d’extension CLI affiche uniquement les valeurs, unités et plages valides pour l’option de commande ou l’énoncé de configuration dans la CLI. Le script de traduction ou le script d’action du module doit s’assurer que seules les valeurs valides sont acceptées et traitées.

Chargement du paquet YANG

Lorsque vous chargez un package YANG sur un équipement Junos, incluez les scripts d’extension CLI dans la liste des scripts d’action pour ce package. Junos OS copie automatiquement le script dans le répertoire /var/db/scripts/action .

Pour charger un nouveau package et inclure des scripts d’extension CLI personnalisés :

  1. Assurez-vous que les scripts Python répondent aux exigences suivantes :
  2. En mode configuration, autorisez l’équipement à exécuter des scripts Python non signés en configurant l’instruction language python oulanguage python3, selon le cas pour la version Junos OS.
    Note:

    À partir de Junos OS version 20.2R1 et Junos OS Evolved version 22.3R1, l’équipement utilise Python 3 pour exécuter des actions YANG et des scripts de traduction. Dans les versions précédentes, Junos OS utilise uniquement Python 2.7 pour exécuter ces scripts, et Junos OS Evolved utilise Python 2.7 par défaut pour exécuter les scripts.

  3. En mode opérationnel, chargez le package YANG et incluez le script d’extension CLI dans la action-script liste.
    Note:

    Pour éviter les erreurs liées aux CLI ou à la base de données de configuration, nous vous recommandons de ne pas effectuer d’opérations CLI, de modifier la configuration ou de mettre fin à l’opération pendant qu’un équipement est en train d’ajouter, de mettre à jour ou de supprimer un package YANG et de modifier le schéma.

  4. Lorsque le système vous invite à redémarrer l’interface cli Junos OS, appuyez sur Enter pour accepter la valeur par défaut de yes.

Exemple : affichage d’une aide contextuelle pour une option de commande

Cet exemple présente un module YANG personnalisé qui utilise l’instruction action-expand d’extension et un script personnalisé pour afficher l’ensemble des valeurs possibles pour l’une des options de commande lorsqu’un utilisateur demande une aide contextuelle dans l’interface de ligne de commande pour cette option.

Exigences

Cet exemple utilise les composants matériels et logiciels suivants :

  • Équipement exécutant Junos OS version 19.2R1 ou ultérieure qui prend en charge le chargement de modèles de données YANG personnalisés.

Aperçu

Le module YANG dans cet exemple définit un RPC personnalisé pour ping sur l’hôte spécifié et renvoyer le résultat. Le module rpc-host-status YANG est enregistré dans le fichier rpc-host-status.yang . Le module importe les modules d’extension Junos OS, qui fournissent les extensions requises pour exécuter des RPC personnalisés sur l’équipement et personnaliser la sortie et l’aide contextuelle dans la CLI.

Le module définit le get-host-status RPC. L’instruction junos:command définit la commande utilisée pour exécuter le RPC dans l’interface cli, qui dans ce cas est show host-status. Les junos:action-execute instructions et junos:script définissent le script d’action qui est appelé lorsque vous exécutez le RPC.

Le hostip paramètre d’entrée inclut les junos:action-expand instructions et junos:script qui définissent le script qui est appelé lorsque l’utilisateur demande une aide contextuelle dans la CLI pour ce paramètre d’entrée.

Le script hostip-expand.py traite l’entrée de l’utilisateur, qui est transmise au script en tant qu’argument symbol ou --symbol, en fonction de la version. Le script calcule et affiche ensuite l’ensemble des valeurs que l’utilisateur peut saisir pour cette option de commande.

Note:

À partir de Junos OS version 21.2R1 et Junos OS Evolved version 21.2R1, lorsque l’équipement transmet des arguments de ligne de commande à un script d’action Python (y compris les scripts d’extension CLI), il préfixe un seul trait d’union (-) vers des noms d’arguments à caractère unique et préfixe deux traits d’union (--) à des noms d’arguments multi-caractères.

Le script d’extension affiche les valeurs valides dans hostip la CLI. Le script d’action implémente la logique qui détermine si la valeur fournie est valide. Cet exemple ajoute le module YANG et les scripts d’action à l’équipement dans le cadre d’un nouveau package YANG nommé rpc-host-status.

Module YANG et scripts d’action

YANG Module

Le module YANG, rpc-host-status.yang, définit le RPC, la commande utilisée pour exécuter le RPC dans la CLI, le nom du script d’action à invoquer lorsque vous exécutez le RPC et le nom du script d’extension CLI à invoquer lorsque l’utilisateur demande une aide contextuelle pour le paramètre d’entrée correspondant.

Script d’action

Le script d’action correspondant est rpc-host-status.py. Cet exemple fournit deux versions du script d’action, qui gèrent correctement les arguments de ligne de commande du script pour les différentes versions.

Script d’action (Junos OS version 21.2R1 et versions ultérieures)
Script d’action (Junos OS version 21.1 et versions antérieures)

Script d’extension CLI

Le script d’action qui gère la logique d’affichage des hostip valeurs valides dans l’interface cli est hostip-expand.py. Cet exemple fournit deux versions du script, qui gèrent correctement les arguments du script pour les différentes versions.

Script d’extension CLI (Junos OS version 21.2R1 et versions ultérieures)
Script d’extension CLI (Junos OS version 21.1 et versions antérieures)

Configuration

Permettre l’exécution des scripts Python

Pour permettre à l’équipement d’exécuter des scripts Python non signés :

  1. Configurez l’instruction language python ou language python3 , en fonction de la version Junos OS.

    Note:

    À partir de Junos OS version 20.2R1 et Junos OS Evolved version 22.3R1, l’équipement utilise Python 3 pour exécuter des actions YANG et des scripts de traduction. Dans les versions précédentes, Junos OS utilise uniquement Python 2.7 pour exécuter ces scripts, et Junos OS Evolved utilise Python 2.7 par défaut pour exécuter les scripts.

  2. Validez la configuration.

Chargez le module YANG et les scripts sur l’équipement

Pour ajouter le module YANG et les scripts à l’équipement Junos :

  1. Téléchargez le module YANG et les scripts sur l’équipement Junos.

  2. Assurez-vous que les scripts Python répondent aux exigences suivantes :

  3. (Facultatif) Validez la syntaxe du module YANG et des scripts d’action.

  4. Ajoutez le module YANG et les scripts à un nouveau package YANG.

  5. Lorsque le système vous invite à redémarrer l’interface cli Junos OS, appuyez sur Enter pour accepter la valeur par défaut de yes, ou tapez yes et appuyez sur Enter.

Vérification de l’aide contextuelle

But

Vérifiez que le script d’extension CLI fonctionne comme prévu.

Action

À partir du mode opérationnel, demandez une aide contextuelle dans l’interface de ligne de commande en publiant la commande définie par l’instruction junos:command dans la définition RPC, et incluez l’argument hostip d’entrée et un point d’interrogation (?).

Effectuez la même opération avec une entrée partielle de l’utilisateur et vérifiez que les valeurs affichées correspondent correctement à l’entrée.

Sens

Lorsqu’une aide contextuelle est demandée pour la hostip valeur, l’équipement appelle le hostip-expand.py script. Le script traite l’entrée de l’utilisateur, si elle est fournie, et imprime les données valides dans la CLI. Si aucune entrée utilisateur n’est donnée, le script imprime toutes les valeurs possibles. Lorsque l’entrée de l’utilisateur est fournie, le script imprime uniquement les valeurs correspondantes.

Tableau de l’historique des versions
Libération
Description
21.2R1 et 21.2R1-EVO
À partir de Junos OS version 21.2R1 et Junos OS Evolved version 21.2R1, lorsque l’équipement transmet des arguments de ligne de commande à un script d’action Python, il préfixe un seul trait d’union (-) vers des noms d’arguments à caractère unique et préfixe deux traits d’union (--) à des noms d’arguments multi-caractères.