Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Utiliser Junos PyEZ pour accéder à l’interpréteur de commandes sur les équipements Junos

RÉSUMÉ Utilisez Junos PyEZ pour vous connecter au shell sur les équipements Junos et exécuter des commandes.

Vue d’ensemble de StartShell

La CLI Junos comporte de nombreuses commandes en mode opérationnel qui renvoient des informations similaires à celles renvoyées par de nombreuses commandes shell. Par conséquent, l’accès à l’interpréteur de commandes de niveau UNIX sur les équipements Junos n’est généralement pas nécessaire. Toutefois, dans certains cas, un utilisateur ou une application peut avoir besoin d’accéder à l’interpréteur de commandes et d’exécuter des commandes d’interpréteur de commandes ou d’exécuter des commandes CLI à partir de l’interpréteur de commandes.

Le module Junos PyEZ jnpr.junos.utils.start_shell définit la StartShell classe qui permet aux applications Junos PyEZ d’établir une connexion SSH à un périphérique Junos et d’accéder au shell. Les StartShell méthodes permettent à l’application d’exécuter des commandes sur la connexion et de récupérer la réponse.

Les StartShell open() méthodes et close() établissent et terminent une connexion SSH avec l’appareil. Par conséquent, si l’application cliente a besoin d’accéder uniquement au shell, elle peut omettre les appels aux Device open() méthodes and close() .

Dans Junos PyEZ version 2.6.7 et antérieure, l’instance StartShell se connecte au port SSH 22 par défaut. À partir de Junos PyEZ version 2.6.8, l’instance StartShell se connecte au même port que celui défini dans l’instance Device , sauf dans les cas suivants, où la connexion shell utilise toujours le port 22 :

  • Devicehost est défini sur 'localhost'

  • Deviceport est défini sur 830.

  • Deviceport n’est pas défini.

Exécuter des commandes à partir de l’interpréteur de commandes

La StartShell run() méthode exécute une commande shell et attend la réponse. Par défaut, la méthode attend l’une des invites de l’interpréteur de commandes par défaut (%, #, > ou $) avant de renvoyer la sortie de la commande. Alternativement, vous pouvez définir l’argument this="string" sur une chaîne spécifique, et la méthode attend la chaîne ou le modèle attendu avant de renvoyer la sortie de la commande.

La valeur de retour est un tuple. Le premier élément est True si le code de sortie est 0, et False sinon. Le deuxième élément est la sortie de la commande.

L’exemple suivant se connecte à un hôte et exécute deux commandes en mode opérationnel à partir de l’interpréteur de commandes. Le script exécute d’abord la request support information commande et enregistre la sortie dans un fichier. Le script exécute ensuite la show version commande, stocke la sortie dans la version variable, puis affiche le contenu de la variable.

Le n-uplet retourné inclut le booléen correspondant au code de sortie de la commande et à la sortie de la commande de la show version commande. La sortie de cet exemple est tronquée par souci de concision.

Les instances de la StartShell classe peuvent également être utilisées comme gestionnaires de contexte. Dans ce cas, vous n’avez pas besoin d’appeler explicitement les StartShell open() méthodes and close() . Par exemple:

Comment spécifier le type de coque

À partir de Junos PyEZ version 2.6.4, StartShell prend en charge l’argument shell_type dans les scripts distants pour spécifier le type de shell. StartShell Prend en charge les types d’interpréteurs de commandes suivants :

  • Coquille C (csh)

  • Coquille de style Bourne (frêne)

Par défaut, StartShell les instances sont de type C Shell (csh). Vous pouvez également spécifier shell_type="sh" de commencer une coquille de style Bourne (cendre). Par exemple:

Comment spécifier un délai d’expiration

Vous pouvez inclure l’argument StartShell timeout pour spécifier la durée en secondes pendant laquelle l’utilitaire doit attendre la chaîne ou le modèle attendu avant d’expirer. Si vous ne spécifiez pas de délai d’expiration, la valeur par défaut est de 30 secondes.

La chaîne attendue est la valeur définie dans l’argument this . Si vous ne définissez thispas , la chaîne attendue est l’une des invites de l’interpréteur de commandes par défaut. Si vous définissez à la place la valeur this=Nonespéciale , l’appareil attend la durée du délai d’expiration avant de capturer la sortie de la commande, comme décrit dans Exécuter les commandes de l’interpréteur de commandes non retournées.

Comment échelonner l’exécution d’une commande

Parfois, vous voudrez peut-être exécuter ou boucler plusieurs appels à la run() méthode. Pour aider à stabiliser la sortie, vous pouvez spécifier l’argument sleep . L’argument sleep indique à l’appareil d’attendre le nombre de secondes spécifié avant de recevoir des données de la mémoire tampon. Vous pouvez le définir sleep en tant que nombre à virgule flottante pour une précision inférieure à la seconde.

Exécuter des commandes de l’interpréteur de commandes Non-Return

Dans certains cas, vous devrez peut-être exécuter des commandes shell qui ne renvoient pas, telles que la commande, qui affiche le monitor traffic trafic qui provient ou se termine sur le moteur de routage local. Dans l’interface de ligne de commande Junos, la monitor traffic commande affiche les informations en temps réel jusqu’à ce que l’utilisateur envoie une séquence de touches Ctrl+c pour arrêter la capture de paquets.

Vous pouvez exécuter des commandes shell qui ne renvoient pas à l’aide de la StartShell run() méthode en incluant l’argument this=None. Lorsque vous incluez l’argument this=None , la méthode attend la valeur de délai d’expiration spécifiée pour récupérer et renvoyer toute la sortie de la commande à partir de l’interpréteur de commandes. Dans ce cas, le premier élément du tuple retourné est lorsque le résultat de la commande shell exécutée renvoie True du contenu, et le deuxième élément est la sortie de la commande. Si vous omettez l’argument this ou si vous le définissez comme égal à une chaîne ou à un modèle spécifique, la méthode peut renvoyer une sortie partielle d’une commande qui ne retourne pas si elle rencontre une invite par défaut ou le modèle de chaîne spécifié dans la sortie de la commande.

L’exemple de code suivant exécute la monitor traffic interface fxp0 commande, attend pendant 15 secondes, puis récupère et renvoie la sortie de la commande.

Tableau de l’historique des modifications

La prise en charge des fonctionnalités est déterminée par la plate-forme et la version que vous utilisez. Utilisez l’Explorateur de fonctionnalités pour déterminer si une fonctionnalité est prise en charge sur votre plateforme.

Libérer
Description
2.6.8
À partir de Junos PyEZ version 2.6.8, l’instance StartShell se connecte au même port que celui défini dans l’instance Device , sauf si l’hôte est défini sur localhost ou si le port est 830 ou non défini.