Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Connectez-vous à des équipements Junos à l’aide de Junos PyEZ

Junos PyEZ est un microframework pour Python qui vous permet de gérer les périphériques Junos. Junos PyEZ modélise chaque équipement en tant qu’instance de la classe jnpr.junos.device.Device. Cette Device classe vous permet de vous connecter à un périphérique Junos à l’aide d’une connexion de console série, telnet ou en établissant une session NETCONF via SSH. En outre, Junos PyEZ prend également en charge la connexion à l’équipement via une connexion telnet ou SSH à un serveur de console. Un serveur de console, également appelé serveur de terminaux, est un périphérique spécialisé qui fournit une connexion réseau au port de console de gestion hors bande d’un périphérique.

Cette rubrique fournit une vue d’ensemble des méthodes de connexion prises en charge par Junos PyEZ et explique comment utiliser les différentes méthodes pour se connecter à un périphérique Junos. Les exemples Junos PyEZ utilisent différentes méthodes d’authentification, mais pour plus d’informations sur l’authentification d’un utilisateur, reportez-vous à la section Authentifier les utilisateurs Junos PyEZ.

Vue d’ensemble des méthodes de connexion

Junos PyEZ vous permet de vous connecter à un équipement Junos à l’aide d’une connexion de console série, telnet ou d’une session NETCONF via SSH. Vous devez utiliser une connexion de console série lorsque vous êtes physiquement connecté au port CONSOLE d’un périphérique. Vous pouvez utiliser telnet ou SSH pour vous connecter à l’interface de gestion de l’appareil ou à un serveur de console connecté au port CONSOLE de l’appareil. En outre, Junos PyEZ prend en charge les connexions SSH sortantes, dans lesquelles l’équipement Junos initie la connexion avec l’application de gestion des clients.

Les équipements nouveaux ou remis à zéro qui ont des configurations d’usine par défaut nécessitent un accès via une connexion à la console. Ainsi, vous pouvez utiliser Junos PyEZ pour configurer initialement un périphérique qui n’est pas encore configuré pour l’accès à distance, soit en utilisant une connexion de console série lorsque vous êtes directement connecté au périphérique, soit en utilisant telnet ou SSH via un serveur de console connecté au périphérique.

Par défaut, Junos PyEZ utilise SSH pour se connecter à un périphérique. Pour spécifier un autre type de connexion, vous devez inclure le mode paramètre dans la Device liste des arguments. Pour établir un telnet vers un périphérique, incluez l’argument mode='telnet' . Pour vous connecter à un périphérique à l’aide d’une connexion de console série, incluez l’argument mode='serial' . Le Tableau 1 récapitule les méthodes de connexion Junos PyEZ, leurs valeurs par défaut pour certains paramètres, toute configuration requise de Junos OS et la version de Junos PyEZ dans laquelle la prise en charge de cette méthode de connexion a été introduite pour la première fois.

Tableau 1 : modes de connexion Junos PyEZ

Mode de connexion

Valeur de l’argument mode

Port par défaut

Configuration requise de Junos OS

Première version prise en charge de Junos PyEZ

NETCONF sur SSH (par défaut)

830

[edit system services]
netconf {
    ssh;
}

1.0.0

Connexion à la console série

Série

/dev/ttyUSB0

2.0.0 (*nix)

2.4.0 (Windows)

Telnet vers un équipement Junos

Telnet

23

[edit system services]
telnet;

2.0.0

Telnet via un serveur de console

Telnet

23

2.0.0

SSH via un serveur de console

22

2.2.0

SSH sortant

[edit system services]
outbound-ssh {     
    ...
}

2.2.0

Note:

Avant de pouvoir accéder à l’interface de gestion d’un périphérique à l’aide de telnet ou de NETCONF via SSH, vous devez d’abord activer le service approprié au niveau de la [edit system services] hiérarchie. Pour plus d’informations, reportez-vous à la section Configurer des nœuds gérés Junos PyEZ. Étant donné que telnet utilise des mots de passe en texte clair (créant ainsi une faille de sécurité potentielle), nous vous recommandons d’utiliser SSH.

Note:

Il est de la responsabilité de l'utilisateur d'obtenir les identifiants d'authentification du nom d'utilisateur et du mot de passe d'une manière sécurisée et adaptée à son environnement. Il est recommandé de demander ces informations d’identification d’authentification lors de chaque appel du script, plutôt que de stocker les informations d’identification dans un format non chiffré.

Junos PyEZ prend en charge l’utilisation de gestionnaires de contexte (withsyntaxe ...as ) pour toutes les méthodes de connexion. Lorsque vous utilisez un gestionnaire de contexte, Junos PyEZ appelle automatiquement les open() méthodes et pour se connecter à l’équipement et close() s’en déconnecter. Si vous n’utilisez pas de gestionnaire de contexte, vous devez appeler explicitement les open() méthodes et close() dans votre application. Nous vous recommandons d’utiliser un gestionnaire de contexte pour les connexions à la console, car le gestionnaire de contexte gère automatiquement la fermeture de la connexion et l’échec de la fermeture de la connexion peut entraîner des résultats imprévisibles.

Présentation des propriétés de connexion Junos PyEZ

Lorsque vous vous connectez à un équipement Junos, Junos PyEZ stocke les informations relatives à la connexion en cours sous forme de propriétés de l’instance Device . Le Tableau 2 présente les propriétés de connexion disponibles.

Tableau 2 : propriétés de l’appareil

Propriété

Description

connected

Booléen spécifiant l’état actuel de la connexion. Retourne True une fois connecté.

hostname

Chaîne spécifiant le nom d’hôte du périphérique auquel l’application est connectée.

master

Retour booléen True si le moteur de routage auquel l’application est connectée est le moteur de routage principal.

port

Entier ou chaîne spécifiant le port utilisé pour la connexion.

re_name

Chaîne spécifiant le nom du moteur de routage auquel l’application est connectée.

timeout

Entier spécifiant la valeur du délai d’expiration RPC en secondes.

uptime

Entier représentant le nombre de secondes écoulées depuis le démarrage du moteur de routage actuel. Cette propriété est disponible à partir de la version 2.1.5 de Junos PyEZ.

user

Chaîne spécifiant l’utilisateur accédant au périphérique Junos.

Par exemple, après vous être connecté à un appareil, vous pouvez interroger la propriété pour renvoyer l’état actuel de la connected connexion. A SessionListener surveille la session et répond aux erreurs de transport en levant une TransportError exception et en définissant la Device.connected propriété sur False.

L’exemple de code suivant imprime la valeur de la propriété après la connexion à un périphérique Junos, puis à nouveau après la fermeture de la connected session.

Lorsque vous exécutez le programme, la propriété est renvoyée lorsque l’application est True connectée à l’appareil et revient False après la fermeture de la connected connexion.

Se connecter à un appareil à l’aide de SSH

La classe Junos PyEZ Device prend en charge l’utilisation de SSH pour se connecter à un périphérique Junos. Vous pouvez établir une session NETCONF via SSH avec l’interface de gestion de l’appareil ou vous pouvez établir une connexion SSH avec un serveur de console directement connecté au port CONSOLE de l’appareil. Le serveur SSH doit être en mesure d’authentifier l’utilisateur à l’aide des mécanismes d’authentification SSH standard, comme décrit dans Authentifier les utilisateurs Junos PyEZ. Pour établir une session NETCONF sur SSH, vous devez également satisfaire aux exigences décrites dans Configurer les nœuds gérés Junos PyEZ.

Junos PyEZ interroge automatiquement le fichier de configuration SSH par défaut à l’adresse ~/. ssh/config, s’il en existe un. Lorsque vous utilisez SSH pour vous connecter à un périphérique Junos ou à un serveur de console connecté au périphérique, Junos PyEZ tente d’abord l’authentification SSH basée sur une clé publique, puis tente l’authentification par mot de passe. Lorsque l’authentification par mot de passe est utilisée, le mot de passe fourni est utilisé comme mot de passe de l’appareil. Lorsque des clés SSH sont utilisées, le mot de passe fourni est utilisé comme mot de passe pour déverrouiller la clé privée. Si la clé privée SSH a une phrase de passe vide, un mot de passe n’est pas nécessaire. Toutefois, les clés privées SSH avec des phrases de passe vides ne sont pas recommandées.

Pour établir une session NETCONF via SSH avec un périphérique Junos et imprimer les informations sur le périphérique dans une application Junos PyEZ à l’aide de Python 3 :

  1. Importez la Device classe et tous les autres modules ou objets requis pour vos tâches.
  2. Créez l’instance de l’appareil et fournissez le nom d’hôte, tous les paramètres requis pour l’authentification et tous les paramètres facultatifs.
  3. Connectez-vous à l’appareil en appelant la open() méthode, par exemple :
  4. Imprimez la fiche technique de l’appareil.
  5. Après avoir effectué toutes les tâches nécessaires, fermez la connexion à l’appareil.

L’exemple de programme dans son intégralité est présenté ici :

Vous pouvez également utiliser un gestionnaire de contexte lors de la connexion à l’appareil, qui appelle automatiquement les open() méthodes and close() . Par exemple :

Junos PyEZ permet également à un client de se connecter à un équipement Junos via une connexion SSH à un serveur de console. Dans ce cas, vous devez spécifier les informations d’identification de connexion pour le serveur de console en incluant les cs_user arguments et cs_passwd dans la liste des Device arguments. Lorsque des clés SSH sont utilisées, définissez l’argument cs_passwd sur la variable contenant la phrase secrète de la clé privée.

Le serveur de consoles se connecte au périphérique Junos via une connexion série, qui peut être lente. Les connexions Junos PyEZ via un serveur de console ont un délai d’expiration de connexion par défaut de 0,5 seconde. Par conséquent, vous devrez peut-être augmenter l’intervalle de délai d’expiration de la connexion en incluant l’argument pour laisser suffisamment de temps à l’application Device timeout=seconds cliente pour établir la connexion.

L’exemple Python 3 suivant s’authentifie auprès du serveur de console, puis du périphérique Junos. Le délai d’expiration de la connexion est défini sur six secondes afin que le client dispose de suffisamment de temps pour établir la connexion.

Junos PyEZ interroge automatiquement le fichier de configuration SSH par défaut à l’adresse ~/. ssh/config, s’il en existe un. Toutefois, vous pouvez spécifier un fichier de configuration SSH différent lorsque vous créez l’instance de périphérique en incluant le ssh_config paramètre dans la Device liste des arguments. Par exemple :

Junos PyEZ prend également en charge ProxyCommand, qui vous permet d’accéder à un équipement cible par le biais d’un hôte intermédiaire prenant en charge netcat. Ceci est utile lorsque vous ne pouvez vous connecter à l’équipement cible que via l’hôte intermédiaire.

Pour configurer ProxyCommand, ajoutez les informations appropriées au fichier de configuration SSH. Par exemple :

Se connecter à un appareil à l’aide de SSH sortant

Vous pouvez configurer un équipement Junos pour qu’il établisse une connexion TCP/IP avec une application de gestion des clients qui serait bloquée si le client tentait d’établir la connexion (par exemple, si l’équipement se trouve derrière un pare-feu). La outbound-ssh configuration demande à l’équipement de créer une connexion TCP/IP avec l’application de gestion des clients et de transmettre l’identité de l’appareil. Une fois la connexion établie, l’application de gestion agit en tant que client et lance la séquence SSH, et l’équipement agit en tant que serveur et authentifie le client.

Note:

Il n’y a pas de commande d’initiation avec SSH sortant. Une fois que le SSH sortant est configuré et validé, l’appareil commence à établir une connexion SSH sortante en fonction de la configuration validée. L’appareil tente à plusieurs reprises de créer cette connexion jusqu’à ce qu’il réussisse. Si la connexion entre l’appareil et l’application de gestion des clients est abandonnée, l’appareil tente à nouveau de créer une connexion SSH sortante jusqu’à ce qu’il réussisse. Cette connexion est maintenue jusqu’à ce que la strophe SSH sortante soit supprimée de la configuration.

Pour configurer le périphérique Junos pour les connexions SSH sortantes, incluez l’instruction outbound-ssh au niveau de la [edit system services] hiérarchie. Dans l’exemple suivant, le périphérique Junos tente d’établir une connexion avec l’hôte au niveau 198.51.100.101 sur le port 2200 :

Pour établir une connexion avec le périphérique Junos à l’aide de SSH sortant, l’application Junos PyEZ définit l’argument dans le constructeur égal au descripteur de fichier d’une socket existante et omet l’argument sock_fd host ou le définit sur None.Device

L’exemple Junos PyEZ suivant écoute sur le port TCP configuré les sessions SSH entrantes des équipements Junos. L’application accepte une connexion entrante et récupère le descripteur de fichier de la socket pour cette connexion, qui est utilisé pour la valeur de l’argument sock_fd . L’application cliente établit la connexion SSH avec l’appareil, collecte et imprime les informations sur l’appareil, se déconnecte de l’appareil et attend d’autres connexions.

Pour plus d’informations sur la configuration du SSH sortant sur les équipements Junos, reportez-vous à la section Configurer le service SSH sortant.

Se connecter à un appareil à l’aide de Telnet

La classe Junos PyEZ Device prend en charge la connexion à un périphérique Junos à l’aide de telnet, qui fournit un accès non chiffré au périphérique réseau. Vous pouvez effectuer un telnet vers l’interface de gestion de l’appareil ou vers un serveur de console directement connecté au port CONSOLE de l’appareil. Vous devez configurer le service Telnet au niveau de la [edit system services] hiérarchie sur tous les appareils qui ont besoin d’accéder à l’interface de gestion. L’accès au périphérique par le biais d’un serveur de console vous permet de configurer initialement un périphérique nouveau ou remis à zéro qui n’est pas encore configuré pour l’accès à distance.

Pour utiliser Junos PyEZ pour effectuer un telnet vers un périphérique Junos, vous devez l’inclure dans la Device liste des arguments et, si vous le souhaitez, inclure mode='telnet' le port paramètre permettant de spécifier un port. Lorsque vous spécifiez mode='telnet' le paramètre, mais que vous omettez le port paramètre, la valeur port par défaut est 23. Lorsque l’application se connecte via un serveur de consoles, spécifiez le port par lequel le serveur de consoles se connecte au périphérique Junos.

Pour utiliser Junos PyEZ pour effectuer un telnet vers un équipement Junos et imprimer les informations sur le périphérique dans une application Junos PyEZ à l’aide de Python 3 :

  1. Importez la Device classe et tous les autres modules ou objets requis pour vos tâches.
  2. Créez l’instance de périphérique avec l’argument, spécifiez le port de connexion s’il est différent de celui par défaut et fournissez le nom d’hôte, tous les paramètres requis pour l’authentification mode='telnet' et tous les paramètres facultatifs.
  3. Connectez-vous à l’appareil en appelant la open() méthode.
  4. Imprimez la fiche technique de l’appareil.
  5. Après avoir effectué toutes les tâches nécessaires, fermez la connexion à l’appareil.

L’exemple de programme dans son intégralité est présenté ici :

Vous pouvez également utiliser un gestionnaire de contexte lors de la connexion à l’appareil, qui gère l’ouverture et la fermeture de la connexion. Par exemple :

Dans certains cas, lorsque vous vous connectez à un serveur de console qui émet un message de bannière, vous devrez peut-être appuyer sur Entrée après le message pour accéder à l’invite de connexion. Si une application Junos PyEZ ouvre une session Telnet avec un serveur de consoles qui demande à l’utilisateur d’appuyer sur la touche Entrée après un message de bannière, il se peut que l’application ne reçoive pas l’invite de connexion, ce qui peut entraîner le blocage de la connexion.

À partir de la version 2.6.2 de Junos PyEZ, Junos PyEZ gère automatiquement la bannière du serveur de console. Dans les versions 2.1.0 à 2.6.1 de Junos PyEZ, une application Junos PyEZ peut inclure console_has_banner=True dans la Device liste d’arguments pour telnet un serveur de console qui émet un message de bannière.

Lorsque vous incluez l’argument et que l’application ne reçoit pas d’invite de connexion lors de la connexion initiale, l’application attend 5 secondes, puis émet un caractère de nouvelle ligne (\n) afin que le serveur de console émette l’invite console_has_banner=True de connexion. Si vous omettez l’argument et que la connexion se bloque, l’application émet à la place le <close-session/> RPC pour mettre fin à la connexion.

Connexion à un périphérique à l’aide d’une connexion à la console série

La classe Junos PyEZ Device vous permet de vous connecter à un périphérique Junos à l’aide d’une connexion de console série, ce qui est utile lorsque vous devez initialement configurer un nouveau périphérique ou un périphérique remis à zéro qui n’est pas encore configuré pour l’accès à distance. Pour utiliser cette méthode de connexion, vous devez être physiquement connecté à l’appareil via le port CONSOLE . Pour obtenir des instructions détaillées sur la connexion au port CONSOLE de votre périphérique, reportez-vous à la documentation matérielle de votre périphérique spécifique.

Note:

Junos PyEZ prend en charge l’utilisation de gestionnaires de contexte pour les connexions de console série. Nous vous recommandons d’utiliser un gestionnaire de contexte pour les connexions à la console, car le gestionnaire de contexte gère automatiquement l’ouverture et la fermeture de la connexion. Si la connexion n’est pas fermée, les résultats risquent d’être imprévisibles.

Pour utiliser Junos PyEZ afin de vous connecter à un périphérique Junos via une connexion de console série, vous devez l’inclure dans la Device liste des arguments et, si vous le souhaitez, inclure mode='serial' le port paramètre permettant de spécifier un port. Lorsque vous spécifiez mode='serial' mais omettez le port paramètre, la valeur port par défaut est /dev/ttyUSB0.

Pour vous connecter à un périphérique Junos à l’aide d’une connexion de console série, et également charger et valider une configuration sur le périphérique dans une application Junos PyEZ à l’aide de Python 3 :

  1. Importez la Device classe et tous les autres modules ou objets requis pour vos tâches.
  2. Créez l’instance de périphérique avec l’argument, spécifiez le port de connexion s’il est différent de celui par défaut et fournissez tous les paramètres requis pour l’authentification mode='serial' et tous les paramètres facultatifs.
    Note:

    Toutes les plates-formes exécutant Junos OS ont uniquement l’utilisateur root configuré par défaut, sans mot de passe. Pour les nouveaux périphériques ou les périphériques remis à zéro, utilisez user='root' et omettez le passwd paramètre.

  3. Chargez et validez la configuration sur l’appareil.
  4. Incluez toute erreur nécessaire.

L’exemple de programme dans son intégralité est présenté ici :