Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Comment utiliser la bibliothèque de requêtes pour Python sur les équipements exécutant Junos OS

La bibliothèque de requêtes pour Python est disponible sur certains équipements exécutant Junos OS qui prennent en charge le package d’extensions Python. Vous pouvez utiliser le module dans les requests scripts Python pour envoyer des requêtes HTTP/1.1. Sur les équipements exécutant Junos OS avec automatisation améliorée, vous pouvez également utiliser le requests module en mode interactif Python. La bibliothèque de requêtes fournit des méthodes supplémentaires pour prendre en charge les déploiements initiaux ainsi que pour effectuer une surveillance de routine et des modifications de configuration sur les équipements exécutant Junos OS. Pour plus d’informations sur le requests module et ses fonctions, consultez la documentation sur les demandes sur http://docs.python-requests.org/.

Émission de demandes

Vous pouvez utiliser le module dans la requests boîte à scripts Python pour envoyer des requêtes HTTP/1.1. Pour effectuer une demande, importez le module dans votre script et appelez la fonction correspondant à la demande souhaitée. Le module prend en charge les requêtes ET GET HTTP POST , ainsi que HEAD, DELETEet les PUT requêtes. La requête renvoie un objet Response contenant la réponse du serveur. Par défaut, les requêtes sont faites à l’aide de l’instance de routage par défaut.

La bibliothèque de requêtes peut être utilisée pour exécuter des RPC sur des équipements exécutant Junos OS qui prennent en charge le service d’API REST. L’équipement cible doit être configuré avec les instructions appropriées au niveau hiérarchique [edit system services rest] pour activer les commandes Junos OS sur HTTP ou HTTPS à l’aide de REST.

Par exemple, le script op suivant exécute une demande GET qui exécute le get-software-information RPC sur un équipement distant exécutant Junos OS sur lequel le service API REST sur HTTP est configuré sur le port par défaut (3000). Le script imprime le code d’état de la réponse, et si le code d’état indique le succès, il imprime le contenu de la réponse.

Pour récupérer uniquement les en-têtes, vous pouvez envoyer une simple HEAD demande.

Si une requête GET nécessite des paramètres supplémentaires, vous pouvez soit inclure l’argument params et fournir un dictionnaire ou une liste de tuples ou d’octets à envoyer dans la chaîne de requête, ou vous pouvez passer des paires clé/valeur dans le cadre de l’URL. De même, vous pouvez fournir des en-têtes personnalisés en incluant l’argument headers et un dictionnaire d’en-têtes HTTP.

La requête suivante exécute le get-interface-information RPC avec l’option terse pour l’interface donnée et renvoie la réponse au format texte :

L’exemple suivant fournit les arguments sous forme de paires clé/valeur dans l’URL :

Pour exécuter plusieurs RPC dans la même demande, lancez une demande HTTP POST et définissez le data paramètre pour référencer les RPC à exécuter. Consultez les sections Exécution de PPC opérationnels et Gestion de la configuration pour obtenir des exemples d’exécution de plusieurs RPC.

Exécution de RPCs opérationnels

Vous pouvez utiliser le requests module pour exécuter des RPC à partir de l’API XML Junos sur un équipement distant exécutant Junos OS sur lequel le service API REST est activé.

Le script opérationnel suivant utilise le requests module pour exécuter l’équivalent RPC de la show interfaces ge-2/0/1 terse commande du mode opérationnel sur l’équipement cible :

Le script op suivant envoie une requête POST qui exécute plusieurs RPC sur l’équipement cible. Le data paramètre fait référence aux RPC à exécuter, qui sont définis dans une chaîne multi-ligne pour plus de lisibilité.

Vous pouvez également créer un script op générique pour lequel l’utilisateur fournit les variables nécessaires et les constructions de script et exécute la requête. Prenons l’exemple de la configuration de script op suivante, qui configure le host, rpcet rpc_args les arguments de ligne de commande pour le script op requests-rpc.py :

L’exemple de script op suivant se connecte à un équipement distant exécutant Junos OS, qui a été configuré avec les instructions appropriées au [edit system services rest] niveau hiérarchique pour activer les commandes Junos OS sur HTTP à l’aide de REST. Le script invite le mot de passe de connexion et se connecte à l’hôte et au port fournis par l’argument host . Le script utilise ensuite le requests module pour envoyer une requête GET exécutant le RPC fourni via les arguments de la ligne de commande.

Note:

À partir de La version 21.2R1 de Junos OS et de la version 21.2R1 de Junos OS Evolved, lorsque l’équipement transmet des arguments de ligne de commande à un script Python op, 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. Dans les versions précédentes, les équipements préfixent un seul trait d’union (-) à tous les noms d’arguments.

Lorsque vous exécutez le script, il exécute le RPC avec les options spécifiées sur l’équipement distant et imprime la réponse au résultat standard.

Gestion de la configuration

Vous pouvez utiliser le requests module pour récupérer ou modifier la configuration sur un équipement exécutant Junos OS sur lequel le service API REST est activé.

Le script op suivant récupère la hiérarchie de la [edit system] configuration du candidat à l’aide d’une demande POST :

Les requêtes HTTP POST vous permettent également d’exécuter plusieurs RPC dans une seule demande, par exemple, pour verrouiller, charger, valider et déverrouiller une configuration.

L’exemple de script op suivant se connecte à l’équipement distant et configure une adresse sur l’interface donnée. Les opérations de verrouillage, de chargement, de validation et de déverrouillage sont définies séparément pour la lisibilité, mais les RPC sont concaténés dans la requête.

Lorsque vous exécutez le script op, il renvoie les résultats RPC pour les opérations de verrouillage, de chargement, de validation et de déverrouillage. Sur certains équipements, la sortie de réponse sépare les réponses RPC individuelles par des lignes de limites qui comprennent -- une chaîne de limites et un Content-Type en-tête. D’autres équipements peuvent inclure uniquement l’en-tête Content-Type .

Utilisation de certificats dans les requêtes HTTPS

Le mécanisme d’authentification de base HTTP envoie les informations d’identification de l’utilisateur sous la forme d’une chaîne de texte en clair codée en Base64. Pour protéger les informations d’authentification contre les écoutes, nous vous recommandons d’activer le service d’API RESTful sur HTTPS, qui chiffre la communication à l’aide de TLS (Transport Layer Security) ou de Secure Sockets Layer (SSL). Pour plus d’informations sur la configuration de ce service, consultez le Guide de l’API REST de Junos OS.

Par défaut, la bibliothèque de demandes vérifie les certificats SSL pour les demandes HTTPS. Vous pouvez inclure les verify arguments et cert dans la demande pour contrôler les options de vérification SSL. Pour obtenir des informations détaillées sur ces options, consultez la documentation sur les demandes.

Note:

Lorsque vous utilisez Python 2.7 pour exécuter un script qui utilise le requests module pour exécuter des requêtes HTTPS, le script génère des SubjectAltNameWarning avertissementsInsecurePlatformWarning.

Le script op suivant envoie une requête GET sur HTTPS et définit l’argument sur le verify chemin de fichier d’une offre ca ou d’un répertoire contenant des certificats d’autorité de certification de confiance. Les certificats d’autorité de certification spécifiés sont utilisés pour vérifier le certificat du serveur.

Pour spécifier un certificat local côté client, définissez l’argument cert égal au chemin d’un seul fichier contenant la clé et le certificat privés du client ou à un tuple contenant les chemins du certificat client individuel et des fichiers de clé privée.

Spécification de l’instance de routage

Par défaut, les requêtes sont exécutées à l’aide de l’instance de routage par défaut. Vous pouvez également exécuter des requêtes à l’aide de l’instance mgmt_junos de gestion ou d’une autre instance de routage non par défaut. Lorsque vous exécutez des scripts via l’infrastructure Junos OS, vous pouvez spécifier l’instance de routage en appelant la set_routing_instance() fonction du script. Certains équipements prennent également en charge la spécification de l’instance de routage et l’exécution d’un script dans le shell de niveau Unix.

Note:

Sur les équipements exécutant Junos OS Evolved, la set_routing_instance() fonction ne prend en charge que l’instance de routage de gestion.

Dans un script Python, pour exécuter une requête à l’aide d’une instance de routage non par défaut, y compris l’instance mgmt_junos :

  1. Importez le jcs module.
  2. Appelez la set_routing_instance() fonction et spécifiez l’instance à utiliser pour la connexion.
  3. Établissez la connexion avec l’équipement cible.

Le script op suivant utilise l’instance mgmt_junos de gestion pour se connecter à l’équipement cible et exécuter des requêtes.

Pour plus d’informations sur l’utilisation de la set_routing_instance() fonction dans les scripts Python, voir set_routing_instance().

En plus de spécifier l’instance de routage dans le script, certains équipements prennent en charge la spécification de l’instance de routage et l’exécution d’un script à partir du shell de niveau Unix. Sur les équipements exécutant Junos OS avec automatisation améliorée (FreeBSD version 7.1 ou ultérieure), vous pouvez utiliser la setfib commande pour exécuter des requêtes avec l’instance de routage donnée, y compris l’instance de gestion et d’autres instances de routage non par défaut.

Le script Python suivant exécute simplement le get-software-information RPC sur un équipement distant et imprime la réponse :

Pour exécuter setfib le script à l’aide d’une instance de routage non par défaut sur un équipement exécutant Junos OS avec automatisation améliorée :

  1. Trouvez l’index logiciel associé à la table de routage de cette instance.

    Dans l’exemple suivant, l’équipement est configuré pour utiliser l’instance mgmt_junosde gestion dédiée non par défaut . L’index de la table de routage est référencé dans la sortie de commande.

    Pour exécuter le script op avec l’instance de routage donnée, utilisez la setfib commande pour exécuter le script et référencer l’index. Par exemple :

    Dans l’exemple suivant, l’équipement est configuré avec une instance de routage non par défaut, vr1, et l’index de la table de routage vr1.inet est 8 :

    La commande suivante exécute le script op à l’aide de l’instance de routage vr1 :

Exécution des opérations ZTP

Le provisionnement sans intervention (ZTP) vous permet de provisionner automatiquement de nouveaux équipements Juniper Networks sur votre réseau, avec un minimum d’intervention manuelle. Pour utiliser ZTP, vous configurez un serveur pour fournir les informations requises, qui peuvent inclure une image Junos OS et un fichier de configuration à charger ou un script à exécuter. Lorsque vous connectez physiquement un équipement au réseau et que vous le démarrez avec une configuration d’usine par défaut, l’équipement récupère les informations du serveur désigné, met à niveau l’image de Junos OS selon le cas et exécute le script ou charge le fichier de configuration.

Lorsque vous connectez et démarrez un nouvel équipement réseau, si Junos OS détecte un fichier sur le serveur, la première ligne du fichier est examinée. Si Junos OS trouve les caractères #! suivi d’un chemin d’interprétation, il traite le fichier comme un script et l’exécute avec l’interpréteur spécifié. Vous pouvez utiliser la bibliothèque de requêtes dans des scripts exécutés pour rationaliser le processus ZTP.

Prenons par exemple l’exemple de script Python suivant, que le nouvel équipement télécharge et exécute pendant le processus ZTP. Lorsque le script s’exécute, il télécharge d’abord le certificat d’autorité de certification à partir de l’emplacement ca_cert_remote sur le serveur spécifié et le stocke localement dans l’emplacement ca_cert_local . Le script se connecte ensuite au serveur de configuration sur le port 8000 et lance une demande GET pour récupérer la nouvelle configuration de l’équipement. La demande inclut le chemin vers le certificat d’autorité de certification, qui est utilisé pour vérifier le certificat du serveur pendant l’échange. Le script utilise ensuite la bibliothèque Junos PyEZ pour charger la configuration sur l’équipement et la valider.