Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Comment utiliser les RPC et les commandes du mode opérationnel dans les scripts op

La plupart des commandes du mode opérationnel de Junos OS ont des équivalents XML. Les scripts Op peuvent exécuter ces commandes XML sur un équipement local ou distant à l’aide du protocole RPC ( Remote Procedure Call ). Toutes les commandes du mode opérationnel qui ont des équivalents XML sont répertoriées dans l’API XML Junos Operational Developer Reference.

L’utilisation des RPC et des commandes en mode opérationnel dans les scripts op est abordée plus en détail dans les sections suivantes :

Utilisation de RPC dans les scripts op

Pour utiliser un RPC dans un script d’exploitation SLAX ou XSLT, incluez le RPC dans une déclaration variable, puis appelez le RPC en utilisant la fonction ou jcs:execute() l’extension jcs:invoke() avec la variable RPC comme argument. La jcs:invoke() fonction exécute le RPC sur l’équipement local. La jcs:execute() fonction, associée à une poignée de connexion, exécute le RPC sur un équipement distant.

L’extrait de code suivant, qui appelle un RPC sur l’équipement local, est développé et décrit entièrement dans l’exemple : Personnaliser la sortie des interfaces d’affichage Commande terse à l’aide d’un script Op :

Syntaxe XSLT

Syntaxe SLAX

L’extrait de code suivant appelle le même RPC sur un équipement distant :

Syntaxe XSLT

Syntaxe SLAX

Dans les scripts Python Op, les RPC sont faciles à exécuter à l’aide des API PyEZ Junos . Chaque instance de la classe Junos PyEZ Device possède une propriété qui vous permet d’exécuter rpc n’importe quel RPC disponible via l’API XML Junos. Après avoir établi une session avec un équipement local ou distant, vous pouvez exécuter le RPC en ajoutant la propriété et le nom de la rpc méthode RPC à l’instance de l’équipement. La valeur de retour est un objet XML commençant par le premier élément sous la <rpc-reply> balise.

Pour exécuter le RPC sur l’équipement local, créez l’instance à l’aide Device d’une liste d’arguments vide. Pour exécuter le RPC sur un équipement distant, créez une instance qui Device utilise les arguments appropriés pour se connecter à cet équipement.

Le code suivant appelle un RPC sur l’équipement local et imprime la réponse :

Syntaxe Python

Le code suivant appelle le même RPC sur un équipement distant et imprime la réponse :

Syntaxe Python

Pour exécuter un RPC sur un équipement distant, une session SSH doit être établie. Pour que le script établisse la connexion, vous devez configurer les informations de clé d’hôte SSH pour l’équipement distant sur l’équipement local où le script sera exécuté, ou les informations de la clé d’hôte SSH pour l’équipement distant doivent exister dans le fichier d’hôtes connu de l’utilisateur exécutant le script. Pour chaque équipement distant où un RPC est exécuté, configurez les informations de clé de l’hôte SSH avec l’une des méthodes suivantes :

  • Pour configurer des hôtes connus SSH sur l’équipement local, incluez l’instruction et spécifiez le host nom de l’hôte et les options de clés d’hôte pour l’équipement distant au [edit security ssh-known-hosts] niveau hiérarchique de la configuration.

  • Pour récupérer manuellement les informations clés de l’hôte SSH, émission de la set security ssh-known-hosts fetch-from-server hostname commande configuration mode pour demander à Junos OS de se connecter à l’équipement distant et d’ajouter la clé.

  • Pour importer manuellement des informations de clé d’hôte SSH à partir d’un fichier, utilisez la commande mode set security ssh-known-hosts load-key-file filename de configuration et spécifiez le fichier d’hôtes connus.

  • L’utilisateur exécutant le script peut également se connecter à l’équipement local, puis se connecter SSH à l’équipement distant, puis accepter manuellement la clé d’hôte, ajoutée au fichier d’hôtes connus de cet utilisateur. Dans l’exemple suivant, le root est connecté au routeur1. Afin d’exécuter un RPC distant sur le routeur2, le root ajoute la clé d’hôte du routeur2 en émettant la commande du ssh router2 mode opérationnel et en acceptant manuellement la clé.

Affichage des balises RPC pour une commande

Vous pouvez afficher les balises XML RPC pour les commandes du mode opérationnel dans l’interface de ligne de commande de l’unité. Pour afficher les balises XML RPC pour une commande, entrez display xml rpc après le symbole du tuyau ( | ).

L’exemple suivant affiche les balises RPC pour la show route commande :

Les scripts SLAX et XSLT peuvent exécuter des RPC à l’aide des balises XML RPC. Les scripts Python doivent convertir les balises RPC et les options de commande dans un format adapté à Python. Pour plus d’informations sur l’utilisation de Junos PyEZ pour exécuter des RPC et sur le mappage des balises RPC avec les arguments de méthode et de méthode Python correspondants, consultez Using Junos PyEZ to Execute RPCs on Devices Running Junos OS.

Utilisation des commandes du mode opérationnel dans les scripts op

Certaines commandes de mode opérationnel n’ont pas d’équivalents XML. Les scripts SLAX et XSLT peuvent exécuter des commandes sans équivalent XML à l’aide de l’élément <command> . Les scripts Python peuvent exécuter ces commandes à l’aide de la méthode Junos PyEZ cli() définie dans la Device classe.

Si une commande n’est pas répertoriée dans la référence du développeur opérationnel de l’API XML Junos, cette commande n’a pas d’équivalent XML. Une autre façon de déterminer si une commande possède un équivalent XML consiste à émettre la commande suivie de la | display xml commande, par exemple :

Si la sortie inclut uniquement des éléments de balise tels que <output>, <cli>et <banner>, la commande peut ne pas avoir d’équivalent XML. Dans l’exemple suivant, la sortie indique que la commande n’a pas d’équivalent show host XML :

Note:

Pour certaines commandes qui ont un équivalent XML, la sortie de la commande « nulle| display xml » n’inclut pas d’éléments de balise autres que , <cli>et <banner> uniquement parce que <output>la fonction pertinente n’est pas configurée. Par exemple, la show services cos statistics forwarding-class commande possède un équivalent XML qui renvoie le résultat dans la <service-cos-forwarding-class-statistics> balise de réponse, mais si la configuration n’inclut pas d’instructions au niveau de la [edit class-of-service] hiérarchie, il n’y a pas de données réelles que la show services cos statistics forwarding-class | display xml commande affiche. Le résultat est similaire à celui-ci :

C’est pourquoi les informations de l’API XML Junos Operational Developer Reference sont généralement plus fiables.

Les scripts SLAX et XSLT op peuvent inclure des commandes qui n’ont pas d’équivalent XML. Utilisez le <command>, <xsl:value-of>et <output> les éléments du script, comme illustré dans l’extrait de code suivant. Cet extrait est développé et décrit dans l’exemple suivant : Afficher les informations du nom de l’hôte DNS à l’aide d’un script Op.

Les scripts Python Op peuvent exécuter des commandes qui n’ont pas d’équivalent XML à l’aide des API PyEZ Junos. La cli() méthode définie dans la Device classe exécute une commande de mode opérationnel et renvoie la sortie au format texte. Par exemple :

Vous pouvez également spécifier format='xml' de renvoyer le format de sortie sous forme d’éléments XML Junos OS. Pour plus d’informations sur la méthode Junos PyEZ cli() , reportez-vous à http://junos-pyez.readthedocs.org/en/latest/_modules/jnpr/junos/device.html#Device.cli .