Programmabilité et automatisation
des réseaux
Page 1 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Avant-propos
De nouveaux protocoles, technologies et modes de fourniture ainsi que d'exploitation et de
maintenance apparaissent dans le domaine de l'ingénierie des réseaux. Les réseaux
conventionnels sont confrontés aux défis posés par les nouvelles exigences de connexion, telles
que celles du cloud computing et de l'intelligence artificielle (IA). Les entreprises recherchent
également l'agilité, la flexibilité et l'élasticité des services. Dans ce contexte, l'automatisation des
réseaux devient de plus en plus importante.
La programmabilité et l'automatisation du réseau visent à simplifier la configuration, la gestion,
la surveillance et l'exploitation du réseau pour les ingénieurs et à améliorer l'efficacité du
déploiement et de l'exploitation et la maintenance. Ce cours vise à aider les ingénieurs réseau à
comprendre la programmation Python et à mettre en œuvre l'automatisation du réseau.
Page 2 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Objectifs
À la fin de ce cours, vous serez capable de :
▫ Décrire les difficultés de l'exploitation et de la maintenance conventionnelles des réseaux.
▫ Comprendre la mise en œuvre de l'automatisation des réseaux.
▫ Comprendre la classification des langages de programmation.
▫ Décrire le style de code Python.
▫ Décrire l'utilisation de base de Python telnetlib.
Page 3 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Table des matières
1. Introduction à la programmabilité et à l'automatisation des réseaux
2. Présentation du langage de programmation et de Python
3. Cas
Page 4 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Contexte : Difficultés de l'exploitation et de la
maintenance conventionnelles des réseaux
L'exploitation et la maintenance conventionnelles des réseaux exigent des ingénieurs réseau qu'ils se connectent
manuellement aux dispositifs de réseau, qu'ils interrogent et exécutent des commandes de configuration et qu'ils filtrent
les commandes de sortie. Ce mode de travail fortement dépendant de l'homme est chronophage, inefficace et difficile à
contrôler.
Scénarios typiques d'exploitation et de maintenance
Plusieurs dispositifs Connaissez-vous les scènes de travail suivantes ?
Opérations complexes 1. Mise à niveau du dispositif : Des milliers de dispositifs de réseau résident sur
Faible efficacité un réseau opérationnel. Vous devez périodiquement mettre à niveau les
dispositifs par lots.
2. Audit de configuration : Une entreprise doit auditer la configuration des
dispositifs chaque année. Par exemple, l'entreprise exige que STelnet soit
activé sur tous les dispositifs et que la sécurité de type spanning tree soit
configurée sur les commutateurs Ethernet. Dans ce cas, vous devez
rapidement trouver les dispositifs qui ne répondent pas aux exigences.
3. Changement de configuration : En raison des exigences de sécurité du
réseau, les comptes et les mots de passe des dispositifs doivent être
Dispositif de réseau modifiés tous les trois mois. Vous devez supprimer le compte d'origine et
créer un compte sur des milliers de dispositifs de réseau.
Page 5 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Automatisation du réseau
Automatisation du réseau : Des outils sont utilisés pour mettre en œuvre le déploiement, les opérations et l'exploitation
& la maintenance automatisés du réseau, réduisant progressivement la dépendance à l'égard de l'homme. Cela résout
les problèmes classiques de l'exploitation et de la maintenance du réseau.
De nombreux outils open-source, tels que Ansible, SaltStack, Puppet et Chef, sont disponibles pour l'automatisation du
réseau dans l'industrie. Du point de vue de la construction des capacités d'ingénierie réseau, il est recommandé aux
ingénieurs d'acquérir la capacité de programmation de code.
Mots clés de
Chef l'automatisation des
SaltStack
réseaux
Outil
NMS
Ansible Python Scripts
automatisés
Shell
Page 6 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Automatisation du réseau basée sur la
programmation
Ces dernières années, avec l'émergence des technologies d'automatisation des réseaux, les capacités de
programmation en Python sont devenues une nouvelle compétence requise pour les ingénieurs réseau.
Les scripts d'automatisation écrits en Python peuvent exécuter des opérations répétées, fastidieuses et
basées sur des règles.
Exemple : Mise en œuvre de la configuration automatisée des
Fichier Python dispositifs à l'aide de Python
Fichier de configuration • Que peut faire l'automatisation du réseau ? L'exemple le plus
intuitif d'automatisation du réseau est la configuration
Sysname SW1 SSH/Telnet automatisée des dispositifs. Ce processus peut être divisé en
Vlan 10 deux étapes : l'écriture d'un fichier de configuration et l'écriture
Description A de code Python pour transférer le fichier de configuration vers
Vlan20 un dispositif.
Description B Dispositif • Écrire le script de configuration en mode interface de ligne de
VLAN 30 de réseau commande (CLI), puis télécharger le script vers le dispositif en
Description C utilisant Telnet/SSH. Cette méthode est facile à comprendre
pour les ingénieurs réseau qui commencent à apprendre la
programmabilité et l'automatisation du réseau. Cette
présentation décrit comment mettre en œuvre l'automatisation
du réseau.
Page 7 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Table des matières
1. Introduction à la programmabilité et à l'automatisation des réseaux
2. Présentation du langage de programmation et de Python
3. Cas
Page 8 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Langages de programmation
Un langage de programmation est utilisé pour écrire un programme informatique et contrôler le comportement d'un
ordinateur.
Selon que la compilation est nécessaire ou non avant l'exécution d'un langage, le langage de programmation peut être
classé en langage compilé et en langage interprété qui n'a pas besoin d'être compilé.
Langage compilé Langage interprété
(Code source) (Code source)
Compilateur :
Interpréteur : Interprète
le code source ligne par
ligne.
Fichier exécutable
Système d'exploitation (Windows/Linux/Mac OS)
CPU (architecture x86/ARM)
Page 9 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Technologie en pile informatique et processus
d'exécution de programme
Technologie en pile informatique Processus d'exécution de programme
Application
Algorithme Langage de
programmation
Ordre croissant de complexité
Ordre croissant d'abstraction
Logiciel
Langage de haut niveau de haut niveau Compilateur Compilateur
C/C++ Fortran
Langage assembleur
Code machine Langage
assembleur
Architecture de jeu d'instructions
Assembleur
Micro architecture
Matériel
Portails/Registres Code
machine
Transistors
Jeu
Physique Instruction 1 Données 1
d'instructions
Page 10 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Langage de programmation de haut niveau -
langage compilé
Langage compilé : Avant qu'un programme dans un langage compilé ne soit exécuté, un processus de compilation est
effectué pour compiler le programme dans un fichier en langage machine. Le résultat de la compilation peut être utilisé
directement sans retraduction pendant l'exécution. Les langages compilés typiques sont C/C++ et Go.
Du code source au programme : Le code source doit être traduit en instructions machine par le compilateur et
l'assembleur, puis l'éditeur de liens utilise la fonction de bibliothèque de liens pour générer le programme en langage
machine. Le langage machine doit correspondre au jeu d'instructions du CPU, qui est chargé dans la mémoire par le
chargeur pendant l'exécution et exécuté par le CPU.
Programme Module objet : Code exécutable :
Code source Éditeur
Compilateur : en langage Assembleur module en programme en Chargeur Mémoire
C/C++ de liens
assembleur langage machine langage machine
Bibliothèque cible :
fonction de la bibliothèque
(langage machine)
Page 11 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Langage de programmation de haut niveau -
langage interprété
Langage interprété : Les programmes en langage interprété n'ont pas besoin d'être compilés avant de s'exécuter. Ils
sont traduits ligne par ligne lors de leur exécution. En général, Java et Python sont des langages interprétés.
Processus du code source aux programmes : Le code source d'un langage interprété est généré par le compilateur, puis
interprété et exécuté par une machine virtuelle (VM) (par exemple, JVM/PVM). La VM masque les différences entre les
jeux d'instructions du CPU. Par conséquent, la portabilité du langage interprété est relativement bonne.
Programme en
Programme Python
langage Java
Compilateur : Compilateur :
Fonction de la Fonctions de
Fichier de classe Fichier .pyc
bibliothèque Java bibliothèque Python
(Code octet) (Code octet)
(langage machine) (langage machine)
JVM PVM
Page 12 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Qu'est-ce que Python ?
Python est un langage de programmation de haut niveau entièrement libre. Son auteur est Guido Van
Rossum.
Avantages de Python : Inconvénients de Python :
• Est un langage interprété à typage dynamique doté d'une syntaxe • S'exécute lentement. C'est un langage
élégante. Il permet aux apprenants de se concentrer sur la logique du interprété qui fonctionne sans être compilé.
programme plutôt que sur l'apprentissage des détails syntaxiques. Le code est traduit ligne par ligne au
• Prend en charge la programmation orientée vers le processus et l'objet. moment de l'exécution en code machine
• Fournit de nombreuses bibliothèques tierces. compréhensible par le CPU, ce qui prend
• Est surnommé le langage glue car il peut appeler du code écrit dans beaucoup de temps.
d'autres langages.
Grâce à la prise en charge d'abondantes bibliothèques tierces et aux avantages du langage Python, ce
dernier peut être utilisé dans de nombreux domaines, tels que l'IA, la science des données, les applications
et les scripts pour l'exploitation et la maintenance automatisées.
Page 13 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Processus d'exécution du code Python
Processus de compilation et d'exécution
d'un programme Python. Opération
Code source Python 1. Installer Python et l'environnement d'exécution
dans un système d'exploitation.
2. Compiler le code source Python.
Compilateur :
3. Le compilateur exécute le code source Python et
génère un fichier .pyc (code octet).
Fichier .pyc (code octet)
4. Une VM Python convertit le code octet en
langage machine.
Exécution de la VM Python 5. Le matériel exécute le langage machine.
Page 14 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Mise en route du code Python - Exécution
interactive
Python s'exécute soit en mode interactif, soit en mode script.
La programmation interactive ne nécessite pas la création de fichiers de script, et le code est écrit dans le
mode interactif de l'interpréteur Python.
1. Entrée --
2. Sortie --
3. Entrée --
4. Entrée --
5. Entrée --
6. Sortie --
Page 15 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Mise en route du code Python - Exécution en
mode script
Le code en mode script peut s'exécuter sur divers compilateurs Python ou dans des environnements de
développement intégrés. Par exemple, on peut utiliser IDLE, Atom, Visual Studio, Pycharm et Anaconda
fournis par Python.
[Link]
print (« hello world ») 1. Entrée --
a=1 2. Sortie --
b=2 3. Sortie --
print ( a + b )
1 Écrire un fichier script Python (.py). 2 Exécuter le fichier script.
Page 16 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Guide de style de code pour Python
Les règles de style de code font référence aux règles de nommage, à l'indentation du code et aux modes de
segmentation du code et des instructions qui doivent être respectés lorsque Python est utilisé pour écrire du code. De
bonnes règles de style contribuent à améliorer la lisibilité du code et à faciliter sa maintenance et sa modification.
Par exemple, les règles suivantes d'utilisation des points-virgules, des parenthèses, des lignes vides et des espaces
sont recommandées :
Point-virgule Ligne vide
• Un point-virgule peut être ajouté à la fin d'une ligne • Des fonctions ou des blocs d'instructions différents
en Python, mais il n'est pas recommandé pour peuvent être séparés par des espaces. Une ligne
séparer les instructions. vide permet de différencier deux segments de code,
ce qui améliore la lisibilité du code.
• Il est recommandé que chaque phrase soit sur une
ligne distincte.
Parenthèses Espace
• Les parenthèses peuvent être utilisées pour la • Les espaces ne sont pas recommandés dans les
continuation de longues instructions. Il faut éviter parenthèses.
les parenthèses inutiles.
• Vous pouvez déterminer s'il faut ajouter des espaces
aux deux extrémités d'un opérateur.
Page 17 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Guide de style de code pour Python -
Nommage des identifiants
• Un identifiant Python représente le nom d'une constante, d'une variable, d'une fonction ou d'un autre objet.
• Un identifiant est généralement composé de lettres, de chiffres et de caractères de soulignement, mais ne peut pas
commencer par un chiffre. Les identifiants sont sensibles à la casse et doivent être uniques. Si un identifiant ne
respecte pas les règles, le compilateur émet un message SyntaxError lors de l'exécution du code.
1. Affecter une valeur --
2. Affecter une valeur --
3. Affecter une chaîne de caractères --
4. Affecter une valeur --
5. Identifiant incorrect --
print() est une fonction intégrée de Python et est utilisée pour afficher le contenu entre
parenthèses.
Question : Quelle est la sortie de la commande print à droite ?
Page 18 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Guide de style de code pour Python -
Indentation du code
Dans les programmes Python, l'indentation du code représente la portée d'un bloc de code. Si un bloc de
code contient deux ou plusieurs instructions, celles-ci doivent avoir la même indentation. Pour Python,
l'indentation du code est une règle syntaxique qui utilise l'indentation du code et les deux points pour
distinguer les couches de code.
Lorsque vous écrivez du code, il est conseillé d'utiliser quatre espaces pour l'indentation. Si une
indentation incorrecte est utilisée dans le code du programme, un message d'erreur IndentationError
s'affiche pendant l'exécution du code.
Indentation correcte --
Indentation correcte --
Indentation incorrecte --
Page 19 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Guide de style de code pour Python -
Utilisation des commentaires
Les commentaires sont des explications ajoutées aux programmes pour en améliorer la lisibilité. Dans le
programme Python, les commentaires sont classés en commentaires à une ligne et en commentaires à
plusieurs lignes.
Un commentaire monoligne commence par le signe dièse (#).
Un commentaire à plusieurs lignes peut contenir de nombreuses lignes, qui sont encadrées par une paire
de trois guillemets ('''...''' ou '''''' ...'''''').
Commentaire monoligne --
Commentaire à plusieurs lignes --
Page 20 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Guide de style de code pour Python - Structure
des fichiers de code source
Un fichier de code source Python complet se compose généralement de la déclaration de l'interpréteur et du format de
codage, de la chaîne de caractères de document, de l'importation du module et du code en cours d'exécution.
Si vous souhaitez faire appel à une classe d'une bibliothèque standard ou d'une bibliothèque tierce dans un programme,
utilisez l'instruction « import » ou « from... import » pour importer les modules correspondants. L'instruction import se
trouve toujours après le commentaire du module ou la chaîne de caractères de document (docstring) en haut du fichier.
Déclaration de l'interpréteur --
Déclaration de format d'encodage --
Commentaire de module ou chaîne de caractères de document --
Moment où un module est importé --
Le code est en cours d'exécution --
Page 21 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Fonctions et modules Python
Une fonction est un bloc de code organisé et réutilisable permettant d'effectuer une action unique et connexe. Elle peut
améliorer la modularité du programme et l'utilisation du code. La fonction est définie à l'aide du mot-clé def.
Un module est un fichier Python enregistré. Les modules peuvent contenir des définitions de fonctions, de classes et de
variables qui peuvent ensuite être utilisées dans d'autres programmes Python. La seule différence entre un module et
un programme Python ordinaire est que le module est utilisé pour être importé par d'autres programmes. Par
conséquent, un module ne dispose généralement pas d'une fonction principale.
[Link] [Link]
def sit(): #Définir une fonction. Import demo #Importer un module.
print (« Un chien est actuellement assis. »)
[Link]() #Appeler une fonction.
sit() #Appeler une fonction.
Résultat d'exécution :
Résultat d'exécution :
Un chien est actuellement assis.
Un chien est actuellement assis. Un chien est actuellement assis.
1 Écrire un fichier Python (.py). 2 Importer un module.
Page 22 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Classes et méthodes Python
Une classe est une collection de propriétés et de méthodes similaires. Le mot-clé class est utilisé pour
définir une classe.
La fonction d'une classe instanciée s'appelle une méthode. Lorsque vous définissez une méthode, une
classe doit porter le mot-clé self, qui indique l'instance de la classe.
[Link]
class Dog(): #Définir une classe. [Link]
def sit(self): #Définir une méthode.
print (« Un chien est actuellement assis. ») import demo
Richard = Dog() #La classe est instanciée. [Link]
print (type([Link])) #La fonction d'un type instancié est appelée
une méthode.
print (type([Link])) #Le type est une fonction.
Résultat d'exécution :
Résultat d'exécution : Un chien est actuellement assis.
<class 'méthode'>
<class 'méthode'> <class 'function'>
<class 'function'>
1 Écrire un fichier Python (.py). 2 Importer un module.
Page 23 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Introduction à telnetlib
telnetlib est un module de la bibliothèque Python standard. Il fournit la classe [Link] pour la mise en œuvre de la
fonction Telnet.
Différentes méthodes de la classe [Link] sont appelées pour mettre en œuvre différentes fonctions.
Importez la classe Telnet du module telnetlib. --
Créez une connexion Telnet à un serveur spécifié. --
Appelez la méthode read_all(). --
Méthode Fonction
Lire les données jusqu'à ce qu'une chaîne d'octets précise, attendue, soit atteinte ou jusqu'à ce
Telnet.read_until (expected, timeout=None)
que les secondes de délai d'attente se soient écoulées.
Lire toutes les données jusqu'à EOF sous forme d'octets ; bloquer jusqu'à la fermeture de la
Telnet.read_all ()
connexion.
Lire tout ce qui peut l'être sans blocage au niveau de I/O (eager). Signaler l'erreur EOFError si la
Telnet.read_very_eager() connexion est fermée et qu'aucune donnée cuite n'est disponible. Retourner b'' si aucune donnée
cuite n'est disponible. Ne pas bloquer sauf au milieu d'une séquence IAC.
[Link](buffer) Écrire une chaîne d'octets sur la socket, en doublant les caractères IAC.
[Link]() Fermer la connexion.
Page 24 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Table des matières
1. Introduction à la programmabilité et à l'automatisation des réseaux
2. Présentation du langage de programmation et de Python
3. Cas
Page 25 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Cas : Connexion à un dispositif à l'aide de
telnetlib
Description de cas :
Un dispositif de réseau fonctionne comme un serveur Telnet, et le Python telnetlib doit être utilisé comme un client Telnet
pour se connecter au dispositif.
Vérifiez la procédure de Vérifiez le
Configurez Telnet. Écrire du code Python.
connexion Telnet. résultat.
[Link] [Link]
GE1/0/10
Serveur Telnet Client Telnet
Le processus de mise en œuvre est le suivant :
Configurez le service Telnet.
Vérifier et visualiser manuellement la procédure de connexion Telnet comme référence pour la mise en œuvre du code.
Compiler et exécuter le code Python.
Vérifiez le résultat.
Page 26 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Cas : Connexion à un dispositif à l'aide de
telnetlib
Configurez Telnet. Vérifiez la procédure de Écrire du code Vérifiez le
connexion Telnet. Python. résultat.
[Link] [Link]
GE1/0/10
Serveur Telnet Client Telnet
Configurez l'adresse IP de
l'interface du dispositif : Configurez le service Telnet :
Page 27 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Cas : Connexion à un dispositif à l'aide de
telnetlib
Vérifiez la procédure de
Configurez Telnet. Écrire du code Python. Vérifiez le résultat.
connexion Telnet.
[Link] [Link]
GE1/0/10
Serveur Telnet Client Telnet
Connexion Telnet :
1 Exécuter une commande
de connexion.
Sortie de la commande
2 Saisir un mot de passe.
Sortie de la commande
Page 28 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Cas : Connexion à un dispositif à l'aide de
telnetlib
Vérifiez la procédure de
Configurez Telnet. Écrire du code Python. Vérifiez le résultat.
connexion Telnet.
[Link] [Link]
GE1/0/10
Serveur Telnet Client Telnet
Importe le module. --
Définit l'adresse IP d'un hôte. --
Définit le mot de passe permettant de se connecter au dispositif. --
Se connecte à l'hôte via Telnet. --
Imprime des données jusqu'à ce que Password: s'affiche. --
Définit un mot de passe ASCII et commence une nouvelle ligne. --
Imprime des données jusqu'à ce que <Huawei> s'affiche. --
Ferme la connexion Telnet. --
Page 29 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Cas : Comparaison des résultats d'exécution
Vérifiez la procédure de
Configurez Telnet. Écrire du code Python. Vérifiez le résultat.
connexion Telnet.
Résultat de la connexion
manuelle Telnet :
Résultat de l'exécution
du code Python :
Page 30 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Quiz
1. Python est un langage compilé. ( )
A. Vrai
B. Faux
2. Comment créer un VLAN 10 en utilisant telnetlib ?
Page 31 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Sommaire
L'automatisation du réseau utilise des outils pour mettre en œuvre le déploiement, les
opérations et l'exploitation & la maintenance automatisés du réseau, réduisant progressivement
la dépendance à l'égard de l'homme. Vous pouvez utiliser un langage ou un outil de
programmation pour mettre en œuvre l'automatisation du réseau.
Python est un langage de programmation de haut niveau entièrement open-source, à la syntaxe
simple et facile à apprendre. Il dispose de riches bibliothèques standard et de bibliothèques
tierces, qui sont applicables au domaine de l'ingénierie des réseaux.
Le module telnetlib de Python fournit la classe [Link] pour la mise en œuvre de la
fonction Telnet. Il vous aide à entrer dans le monde de la programmabilité et de l'automatisation
des réseaux !
Page 32 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Informations complémentaires
Pour plus d'informations sur Python, visitez le site [Link]
Page 33 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.
Thank You
[Link]
Page 34 Copyright © Huawei Technologies Co., Ltd. 2023. Tous droits réservés.