2025
DEVNET
PRESENTED BY:
LOUZI YASMINE
CHAPITRE 1 :Les Fondamentaux Python
1.1 Interpréteur Python ............................................................................................................... 6
1.2 Langage et syntaxe de base ................................................................................................... 6
1.3 Types de données, Variables & Conversions: ........................................................................... 7
1.4 Listes & Dictionnaires ............................................................................................................ 7
1.5 Entrée utilisateur................................................................................................................... 8
1.6 Fonctions & Conditions If....................................................................................................... 8
1.7 Les Boucles ..................................................................................................................... 8
1.8 Accès aux fichiers ................................................................................................................. 9
1.9 APIs et Parsing JSON avec Python........................................................................................... 9
1.10 Bibliothèques API : requests, ncclient, xmltodict ................................................................. 12
1.11 Python et la programmation des réseaux............................................................................. 13
1.12 Programmation des Équipements Réseaux ......................................................................... 13
CHAPITRE 2 : Introduction à la Programmation des Réseaux via API
2.1 Introduction à la Programmation des Réseaux ...................................................................... 16
2.2 Présentation du domaine de DEVNET. .................................................................................. 17
2 .3 Programmation des réseaux via leurs APIs ........................................................................... 17
2.4 RFC liées à la programmation des réseaux ............................................................................ 18
2.5 Effectuer les opérations RESTCONF avec Python................................................................... 18
2.6 Effectuer les opérations NETCONF avec Python .................................................................... 19
CHAPITRE 3 : Définition d’une API
3.1 Définition simple d’une API .................................................................................................. 22
3.2 Rôle des API en réseau ........................................................................................................ 22
3.3 Requêtes d’interrogation des API via HTTPS ..................................................................... 22
CHAPITRE 4 : Modèles YANG
4.1 Présentation ....................................................................................................................... 25
4.2 Protocoles de transport & modèles de données .................................................................... 26
4.3 Sources de modèles ............................................................................................................ 26
4.4 Exploration des modèles YANG avec Python ......................................................................... 26
CHAPITRE 5 : NETCONF
5.1 Présentation NETCONF ....................................................................................................... 29
5.2 Piles de protocole NETCONF................................................................................................ 29
5.3 Opérations NETCONF .......................................................................................................... 29
[Link] + YANG + XML ..................................................................................................... 29
5.5 Exemple Python : edit-config................................................................................................ 30
CHAPITRE 6 :RESTCONF
6.1 Présentation RESTCONF ................................................................................................. 32
6.2 Pile protocolaire RESTCONF ................................................................................................ 32
6.3 Opérations ......................................................................................................................... 32
6.4 YANG et RESTCONF ,Format JSON/XML ........................................................................... 33
CHAPITRE 7 : Développement de Scripts d’API avec Python
7.1 CRUD RESTCONF et Postman .............................................................................................. 35
7.2 CRUD RESTCONF et Python ................................................................................................. 35
7.3 CRUD NETCONF et Python .................................................................................................. 36
CHAPITRE 1 :Les Fondamentaux Python
1.1 Interpréteur Python
Définition
L’interpréteur Python est le programme qui exécute les instructions Python ligne par ligne.
Pourquoi Python pour DevNet ?
• Langage simple
• Idéal pour l’automatisation
• Dispose de bibliothèques réseau (requests, ncclient…)
Modes d’exécution
1. Mode interactif (REPL)
• On tape directement les commandes :
1. Mode Script
• On crée un fichier : [Link]
• On exécute :
Exemple:
1.2 Langage et syntaxe de base
Règles de base
• L’indentation est obligatoire.
• Les commentaires commencent par #.
6
Exemple:
1.3 Types de données, Variables & Conversions:
Types courants
Type Exemple
int 10
float 3.14
str "R1"
bool True
Exemple:
Conversion
1.4 Listes & Dictionnaires
Liste(collection ordonnée)
Dictionnaire(clé → valeur)
7
1.5 Entrée utilisateur
1.6 Fonctions & Conditions If
Conditions
Fonctions
1.7 Les Boucles
For
While
8
1.8 Accès aux fichiers
Lire un fichier
Écrire un fichier
1.9 APIs et Parsing JSON avec Python
What is an API ?
API = Application Programming Interface
An API is a set of rules that allows two computer systems to communicate together.
In networking:
• Instead of configuring a router manually with CLI (command line),
• We send commands and data via an API
Example:
✔ Ask a router to return its interface list
✔ Create a new Loopback
✔ Modify IP addresses
✔ Delete configurations
Real-life example
Think of an API like:
You go to a restaurant
The menu is the API
The kitchen is the server
9
You ask for a burger (request)
The kitchen gives it to you (response)
You don’t need to enter the kitchen or know how food is cooked
the API handles communication between you and the system.
Why APIs in networks?
Before automation, network engineers used:
Now with API:
➡ Faster
➡ Automated
➡ No human mistakes
➡ Can manage 1000 routers in seconds
What is JSON ?
JSON = JavaScript Object Notation
It is a text format to represent structured data, commonly used in APIs.
Example:
Routers and servers use JSON to exchange:
• Configuration
• Status
• Metrics
• Logs
10
What does “Parsing JSON” mean?
Parsing = reading and extracting data from JSON.
Why do we need to parse JSON in DevNet?
Because when we call a router’s API:
The router responds with JSON, for example:
We need Python to parse it to:
• Display interface names
• Export them
• Modify configuration
• Make decisions
Term Meaning
API A communication system that allows programs to talk to devices (like routers).
JSON A structured text format used to exchange data.
Parsing Reading JSON and extracting values in Python.
JSON vers Python
11
Python vers JSON
1.10 Bibliothèques API : requests, ncclient, xmltodict
GET avec requests
Xmltodict ,convertir XML → Python
ncclient pour NETCONF
12
1.11 Python et la programmation des réseaux
Exemple : Ping multiple
1.12 Programmation des Équipements Réseaux
Exemple simple (simulation)
Exercice:
1. Créer une liste de 5 routeurs et l’afficher.
2. Créer un dictionnaire contenant : hostname, ip, modèle.
3. Lire un fichier [Link] et afficher chaque ligne.
4. Récupérer du JSON depuis une API publique.
5. Écrire une fonction check_status() qui prend un ping et retourne "OK" ou "DOWN".
6. Faire un menu Python (1. afficher liste, 2. ajouter device, 3. supprimer).
13
CHAPITRE 2 : Introduction à la Programmation
des Réseaux via API
2.1 Introduction à la Programmation des Réseaux
La programmation des réseaux consiste à utiliser des langages de programmation, comme Python,
pour interagir avec des équipements, des services et des protocoles réseau. Au lieu de configurer
manuellement un routeur, un commutateur ou un pare-feu via l’interface CLI, on peut automatiser ces
tâches à l’aide de scripts.
Avec la croissance des environnements informatiques modernes (cloud, virtualisation, SDN, IoT…), les
entreprises doivent gérer des milliers d’équipements. La configuration manuelle devient lente, coûteuse,
sujette à des erreurs humaines et difficile à reproduire.
La programmation réseau permet donc :
• d’automatiser les configurations et tâches répétitives,
• d’améliorer la rapidité de déploiement,
• de réduire les erreurs humaines,
• de standardiser et documenter les opérations,
• d’intégrer le réseau avec d’autres systèmes (supervision, inventaire, sécurité, DevOps…).
Rôle de Python dans la Programmation des Réseaux
Python est aujourd’hui le langage le plus utilisé dans le domaine des réseaux car :
• il est simple à apprendre,
• il possède de nombreuses bibliothèques (requests, netmiko, napalm…),
• il permet d’interagir avec des équipements via CLI, SSH, API REST, SNMP, etc.
Grâce à Python, un administrateur réseau peut :
• récupérer automatiquement des informations sur des routeurs,
• pousser des configurations à des dizaines d’équipements,
• superviser l’état d’un réseau,
• effectuer des mises à jour massives,
• interagir avec des APIs fournies par Cisco, Juniper, Fortinet, VMware…
Un changement dans la façon de gérer les réseaux
Autrefois, les réseaux étaient administrés appareil par appareil. Aujourd’hui, on se dirige vers une
approche programmée et automatisée :
16
• SDN (Software Defined Networking),
• Infrastructure as Code,
• DevNet,
• Automatisation et orchestration,
• APIs REST dans les équipements modernes.
Ainsi, les ingénieurs réseaux ne se contentent plus de connaître la configuration CLI, mais doivent
également développer des compétences en :
• programmation,
• scripts d’automatisation,
• compréhension des APIs,
• formats d’échange (JSON, XML),
• DevOps & NetDevOps.
2.2 Présentation du domaine de DEVNET.
Cisco DevNet est un domaine qui combine :
− Programmation
− Automatisation réseau
− APIs des équipements réseau
− Infrastructure programmables (SDN, NFV, Intent-based networking)
L’objectif :
Automatiser, configurer, superviser et dépanner des réseaux à l’aide du code.
Pourquoi DevNet existe ?
Parce que les réseaux deviennent :
− Trop complexes pour être configurés manuellement
− Basés sur des APIs au lieu de CLI
− Dynamiques (SDN, Cloud, IoT…)
− Un ingénieur DevNet = un ingénieur réseau + un développeur.
2 .3 Programmation des réseaux via leurs APIs
Définir une API:
17
Une API = interface permettant à 2 systèmes de communiquer.
Les équipements modernes (Cisco IOS-XE, Juniper, Huawei…) exposent :
• RESTCONF API (HTTP + JSON/XML)
• NETCONF API (SSH + XML + YANG)
Grâce à Python, on peut :
- Lire la configuration
- Modifier des interfaces
- Créer des VLAN
- Vérifier l’état du routeur
- Automatiser des tâches répétitives
2.4 RFC liées à la programmation des réseaux
Les RFC importantes :
RFC Description
RFC 6241 NETCONF standard
RFC 8040 RESTCONF standard
RFC 6020 YANG 1.0
RFC 7950 YANG 1.1
RFC 7951 JSON Encoding for YANG
2.5 Effectuer les opérations RESTCONF avec Python
RESTCONF utilise
− HTTP(S)
− JSON ou XML
− Les modèles YANG
Exemple Python :RESTCONF GET
18
2.6 Effectuer les opérations NETCONF avec Python
NETCONF utilise :
• SSH
• XML
• YANG
Exemple Python:NETCONF GET
19
Additionnelle :
Requêtes d’interrogation via HTTPS:
Exemple GET simple
Postman + Python:
Exemple POST dans Postman
Body (JSON):
Exemple POST en Python
20
Programmation des équipements réseaux via leurs API :
Exemple GET sur DEVNET Sandbox
21
CHAPITRE 3 : Définition d’une API
3.1 Définition simple d’une API
Une API (Application Programming Interface) est une interface qui permet à deux programmes de
communiquer.
Dans DevNet :
➡ Les routeurs, switchs et firewalls exposent des APIs réseau pour accéder à la configuration.
3.2 Rôle des API en réseau
Les API permettent :
✔ Automatisation
✔ Supervision
✔ Modification automatique de la configuration
✔ Intégration réseau/cloud
✔ Zero-Touch Provisioning
✔ Network Programmability
3.3 Requêtes d’interrogation des API via HTTPS
Méthodes HTTP
Méthode Signification
GET Lire des données
POST Créer, ajouter
PUT Modifier
DELETE Supprimer
Exemple avec Postman :
1. URL :
2. Headers :
• Accept: application/yang-data+json
22
• Authorization: Basic Auth
3. Click → Send
4. Lire la réponse JSON
Exemple Python (GET) :
23
CHAPITRE 4 : Modèles YANG
24
4.1 Présentation
YANG = Yet Another Next Generation
Un langage pour décrire la structure et le type des données des équipements réseau.
Les APIs (RESTCONF/NETCONF) utilisent les modèles YANG pour :
• Organiser les données
• Valider les configurations
• Générer automatiquement JSON/XML
Structure d’un modèle YANG:
Composants :
• module
• container
• list
• leaf
Analyse d’un modèle YANG:
Étudiant doit identifier :
• les containers
• les feuilles (leaf)
• les types (string, boolean…)
25
4.2 Protocoles de transport & modèles de données
Protocole Format Transport
NETCONF XML SSH
RESTCONF JSON + XML HTTPS
4.3 Sources de modèles
Source Description
ietf Standards Internet
ieee Standards des réseaux
openconfig Google + opérateurs, modèles modernisés
Cisco native Modèles propres à Cisco
4.4 Exploration des modèles YANG avec Python
Exemple : télécharger un modèle YANG depuis un routeur IOS-XE.
26
Exemple2 :
27
CHAPITRE 5 : NETCONF
28
5.1 Présentation NETCONF
NETCONF = protocole standardisé (RFC 6241) pour gérer des équipements réseau via XML.
• Fonctionne via SSH
• Envoie des RPC
• Utilise XML pour la configuration
5.2 Piles de protocole NETCONF
• Transport layer : SSH
• Messages : RPC Layer
• Configuration data layer
• Operations : edit-config, get-config…
5.3 Opérations NETCONF
Opération Rôle
get Lire l’état
get-config Lire la configuration
edit-config Modifier la configuration
copy-config Copier une config
delete-config Supprimer
[Link] + YANG + XML
Exemple RPC :
29
5.5 Exemple Python : edit-config
30
CHAPITRE 6 :RESTCONF
31
6.1 Présentation RESTCONF
RESTCONF = interface HTTP sur les données YANG (RFC 8040).
Plus moderne que NETCONF.
6.2 Pile protocolaire RESTCONF
• Fonctionne via HTTPS
• Utilise : GET, POST, PUT, DELETE
• Utilise YANG comme modèle
• Format JSON/XML
RESTCONF dans Postman:
Exemple URL:
6.3 Opérations
Opération Description
GET Lire
POST Ajouter
PUT Modifier
DELETE Supprimer
Exemples Python:
GET
POST
32
6.4 YANG et RESTCONF ,Format JSON/XML
RESTCONF utilise les modèles YANG pour décrire la configuration et l’état des équipements réseau. Les
données échangées entre le client et le serveur RESTCONF sont envoyées sous forme de fichiers JSON
ou XML. JSON est léger et facile à lire, tandis que XML est plus structuré et souvent utilisé dans les
systèmes traditionnels. RESTCONF utilise donc YANG pour le modèle, et JSON/XML pour le transport des
données.
RESTCONF avec Python:
33
CHAPITRE 7 : Développement de Scripts d’API
avec Python
34
7.1 CRUD RESTCONF et Postman
CRUD
CRUD is an acronym that stands for the four basic operations you can perform on data in any system (like
databases or network devices):
• C → Create: Add new data.
• R → Read: Retrieve or view existing data.
• U → Update: Modify existing data.
• D → Delete: Remove data.
Postman
Postman is a tool that lets you send HTTP requests to APIs (like RESTCONF) to test them. It’s very
useful for learning and testing CRUD operations on network devices or any API.
• You can simulate Create, Read, Update, Delete operations on your network device through
RESTCONF using Postman.
CRUD RESTCONF
Create POST
Read GET
Update PUT
Delete DELETE
7.2 CRUD RESTCONF et Python
Create (POST)
Read (GET)
35
Update (PUT)
Delete (DELETE)
7.3 CRUD NETCONF et Python
36