Python pour l'automatisation réseau : Netmiko et NAPALM en pratique
Python est le langage indispensable pour l'ingénieur réseau moderne. Netmiko (SSH multi-vendor), NAPALM (API unifiée), PyEZ (Juniper), Nornir (framework Pythonic). Remplace Perl/Expect/Bash. Ce guide couvre l'écosystème Python network engineering 2026.
Bibliothèques principales
Netmiko
- SSH simple multi-vendor
- from netmiko import ConnectHandler
- device = { 'device_type': 'cisco_ios', 'host': '10.0.0.1', 'username': 'admin', 'password': 'pass' }
- conn = ConnectHandler(**device)
- output = conn.send_command('show version')
NAPALM
- API unifiée cross-vendor
- from napalm import get_network_driver
- driver = get_network_driver('ios')
- dev = driver('10.0.0.1', 'admin', 'pass')
- dev.open()
- facts = dev.get_facts()
- interfaces = dev.get_interfaces_ip()
- dev.close()
PyEZ (Juniper)
- NETCONF/YANG natif Juniper
- from jnpr.junos import Device
- dev = Device(host='10.0.0.1', user='admin', password='pass')
- dev.open()
- dev.rpc.get_config()
Nornir
- Framework Pythonic pour automation à grande échelle
- Inventaire hiérarchique (vs Ansible plain)
- Parallélisation native Python
- Plugins : NAPALM, Netmiko, Jinja2
- Mieux que Ansible pour >1000 devices
Requests + REST
- Pour APIs modernes : Meraki, FortiGate, Panorama
- import requests
- r = requests.get('https://api.meraki.com/api/v1/organizations', headers={'X-Cisco-Meraki-API-Key': 'KEY'})
Scapy : manipulation paquets
- Craft, send, capture paquets
- Use cases : tests, scan, learning
- Ex : envoyer ping custom, tester ACL
Jinja2 : templates
- Génération config depuis data
- Intégré Ansible ET standalone
- Exemple : template Jinja2 + YAML → 100 configs switchs
Use cases courants
- Backup configs : Netmiko + cron
- Audit configs (compliance)
- Inventaire dynamique : scan SNMP + CMDB
- Config push massif : VLAN, ACL, QoS
- Health checks : post-change validation
- Reports : état BGP, OSPF, CPU, mémoire
Tools et IDE
- VSCode + Python extension
- PyCharm
- Jupyter notebooks pour exploration
- Black : formatter
- pylint : linter
Compétences recommandées
- Python basics : dicts, lists, fonctions, classes
- asyncio : exécution parallèle
- Git + Gitflow
- REST API + JSON
- Regex pour parsing CLI output
- YAML + Jinja2
Formation
- Cisco DevNet Associate / Professional
- Python Network Programming (Eric Chou)
- NetworkToCode trainings
- Udemy : cours Python pour ingénieurs réseau
- YouTube : Kirk Byers (Netmiko creator)
Commander chez OPTINOC
Formation Python réseau équipes : 5j bootcamp. Mentoring scripts automatisation. Devis sous 48h.
