Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Exemple : utiliser Jsnapy comme module Python

Cet exemple montre comment utiliser les fonctionnalités de Junos Snapshot Administrator en Python (jsnapy) dans un script ou un programme python. Lorsque des entrées de nom d’utilisateur et de mot de passe sont requises dans ce script, remplacez <nom d’utilisateur> et <mot de passe> par les valeurs appropriées.

Une installation par défaut de jsnapy inclut de nombreux exemples de fichiers de configuration et de test dans le /etc/jsnapy/samples/ répertoire, y compris plusieurs exemples de scripts Python nommés module_check.py, , module_data.pymodule_device.pyet module_snapcheck.py. Ces fichiers démontrent chacun différentes fonctionnalités de jsnapy fonctionnant en tant que module dans un script python.

Cet exemple utilisera une version légèrement modifiée du fichier de script Python, , module_data.pypour illustrer l’exécution de jsnapy avec l’option snapcheck . Le script montre comment transmettre des données de configuration YAML à partir du script Python.

Exigences

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

  • Un appareil exécutant Junos OS

  • Une instance de jsnapy installée sur un serveur (serveur jsnapy)

  • Un éditeur de texte avec lequel afficher et modifier le script

Avant d’écrire vos propres scripts Python pour jsnapy, assurez-vous d’avoir une compréhension approfondie des concepts de programmation Python et du fonctionnement jsnapy.

Aperçu

Dans cet exemple, nous examinons le script /etc/jsnapy/samples/module_data.pyPython fourni. Nous verrons comment le script importe jsnapy en tant que module, comment il définit les paramètres de configuration jsnapy et comment il affiche les résultats de l’opération snapcheck sur un périphérique Junos OS distant.

Topologie

Cet exemple utilise une topologie simple où le serveur jsnapy se connecte à un seul équipement Junos OS distant. Des connexions à plusieurs périphériques peuvent être établies, mais ne seront pas abordées dans cet exemple.

Figure 1 : topologie jsnapy Topology jsnapy

Examen du script Python

Le script python effectue les tâches suivantes :

  • Importe les modules Python requis dans le script.

  • Définit une variable utilisée pour appeler la fonction SnapAdmin() à partir du module jsnapy.

  • Définit les paramètres de configuration jsnapy et les affecte à une variable.

  • Appelle jsnapy avec l’option snapcheck utilisant la variable de configuration précédemment définie comme argument de configuration et nom de fichier preinstantané.

  • Imprime les résultats sur le terminal du serveur jsnapy.

Note:

Dans sa forme originale, le script Python, , importe et appelle le joli module d’impression Data, module_data.pypprint. Lorsqu’il est appelé à partir du script, ce module permet à python d’imprimer toutes les données de snapshot que jsnapy reçoit du périphérique Junos OS sur le terminal du serveur jsnapy. En raison de la longueur de ces données, l’appel à pprint est commenté pour cet exemple en ajoutant à l’appel le signe dièse (#).

Notez les commentaires

Procédure étape par étape

  • Étant donné que nous examinons un script existant dans cet exemple, nous allons signaler les commentaires qui apparaissent en tant que première ligne du fichier. Les commentaires peuvent être placés n’importe où dans le script en commençant le commentaire par le signe dièse (#).

Importer des modules Python

Procédure étape par étape

  • Ce script utilise trois modules importés, un pour jsnapy, un pour imprimer des données complexes sur le terminal et un pour travailler avec les périphériques Junos OS.

Définir une variable pour l’appel à SnapAdmin

Procédure étape par étape

  • Ici, le script assigne la fonction SnapAdmin() du module jsnapy à une variable nommée js pour faciliter l’utilisation et pouvoir passer des arguments lors de l’appel de jsnapy.

Définition des paramètres de configuration jsnapy

Procédure étape par étape

  • Ici, le script définit l’hôte Junos OS et les tests à effectuer sur cet hôte. Il affecte ces paramètres à la variable config_data. Les guillemets triples permettent config_data de contenir des caractères de nouvelle ligne.

    Note:

    Une autre façon de spécifier les hôtes et les tests à effectuer consiste à référencer un fichier de configuration jsnapy. Le fichier de configuration peut définir un ou plusieurs hôtes et un ou plusieurs fichiers de test. Étant donné que les données de configuration sont contenues dans le script Python dans cet exemple, la config_data variable ne référence pas un fichier de configuration en dehors du script, mais est remplie avec les paires clé-valeur qui apparaissent entre les guillemets triples (« " »).

Appelez jsnapy avec les données de configuration définies

Procédure étape par étape

  • Ici, le script appelle jsnapy avec l’option snapcheck et transmet les informations de configuration et le nom du fichier instantané. Les informations renvoyées à la suite de cet appel sont stockées sous forme de valeurs dans la snapchk variable.

    Note:

    Vous pouvez accéder à toutes les options jsnapy disponibles, , checksnapet snapcheck en ajoutant l’option après l’appel à SnapAdmin(). Par exemple, , js.check(config_file, "snapshot1", "snapshot2")js.snap(config_file, "snapshot_name")et js.snapcheck(config_file, "snapshot_name").

Imprimez les résultats sur le terminal

Procédure étape par étape

  • Ici, le script parcourt en boucle les valeurs renvoyées et les imprime sur le terminal du serveur jsnapy dans un format lisible. C’est également là que nous modifions le script pour l’empêcher d’imprimer l’intégralité de l’instantané sur le terminal.

Résultats

Pour faciliter l’affichage, le contenu du script modifié est affiché ci-dessous en exécutant la cat commande sur le fichier module_data.py.

Vérification

Vérification du fonctionnement du script

But

Une fois que votre script Python et les fichiers de configuration et de test jsnapy nécessaires sont terminés, vous pouvez vérifier le fonctionnement du script en l’exécutant à partir du terminal du serveur jsnapy.

Action