SAÉ 15 — Semestre 1

Traiter des données

Script Python de supervision réseau : ping automatisé, export CSV et graphiques de disponibilité.

Contexte et objectifs

Cette SAÉ nous a initiés à la programmation Python dans un contexte réseau et télécoms. L'objectif : développer un outil permettant de surveiller la disponibilité d'un ensemble d'équipements réseau, de stocker les résultats et de les visualiser. Le projet était individuel, ce qui m'a demandé d'être autonome sur toutes les étapes, y compris la recherche de documentation.

La compétence visée était RT3 (Créer des outils et applications informatiques), niveau 1 : s'intégrer dans un service informatique.

Apprentissages Critiques mobilisés

AC13.01 — RT3
Utiliser un système informatique et ses outils
Utilisation de VS Code, du terminal Python, de pip pour installer des bibliothèques (matplotlib, requests), et de l'environnement Linux pour exécuter les scripts.
AC13.02 — RT3
Lire, exécuter, corriger et modifier un programme
Lecture et compréhension de scripts Python fournis en exemple, identification des erreurs (IndexError, FileNotFoundError), correction et adaptation au cahier des charges de la SAÉ.
AC13.03 — RT3
Traduire un algorithme dans un langage donné
L'enseignant nous avait fourni des algorithmes en pseudocode. J'ai traduit en Python les fonctions de ping, d'écriture CSV et de génération du graphique matplotlib.
AC13.05 — RT3
Choisir les mécanismes de gestion de données adaptés
Choix du format CSV pour stocker les résultats (horodatage, IP, latence, statut). Justification : format léger, lisible par Excel, compatible avec matplotlib pour la visualisation.
AC13.06 — RT3
S'intégrer dans un environnement propice au développement collaboratif
Versionnement du code sur un dépôt Git personnel, avec commits réguliers et messages descriptifs. Utilisation de branches pour tester des fonctionnalités sans casser le code principal.

Tâches réalisées

  • Écriture d'une fonction ping_host(ip) utilisant le module subprocess pour envoyer un ping et récupérer la latence
  • Boucle principale : parcours d'une liste d'IPs toutes les 60 secondes, écriture des résultats dans un fichier CSV
  • Génération d'un graphique de disponibilité par machine (axe du temps, couleur verte/rouge selon le statut) avec matplotlib
  • Gestion des erreurs : machine injoignable, fichier CSV absent, timeout de ping
  • Versionnement sur GitHub (dépôt public disponible dans la sidebar)

Traces et preuves

Trace 1 — Extrait du script Python (fonction ping)

La fonction ping_host(ip, timeout=1) utilise subprocess.run pour appeler ping, parse la sortie pour extraire la latence en ms, et retourne un dictionnaire contenant l'IP, le statut (up/down), la latence et l'horodatage. C'est le cœur de l'outil — illustre AC13.02 et AC13.03. Code source complet sur GitHub.

Trace 2 — Graphique de disponibilité généré

Graphique matplotlib généré après 30 minutes de supervision sur 5 équipements fictifs : axe X = temps, axe Y = latence en ms, points colorés (vert = disponible, rouge = injoignable). Montre concrètement AC13.05 : le choix du CSV comme format de stockage intermédiaire permet de régénérer ce graphique à tout moment.

Autoévaluation

Ce que j'ai réussi

Le script fonctionne et produit un graphique lisible. La gestion des erreurs est propre — le script ne plante pas si une machine ne répond pas.

Difficultés rencontrées

La gestion des exceptions Python m'a bloqué longtemps. Je ne comprenais pas pourquoi mon script plantait sur une machine injoignable. Il a fallu comprendre les types d'exceptions de subprocess.

Ce que j'aurais fait autrement

J'aurais rendu le script configurable via un fichier externe (liste d'IPs, intervalle de mesure) plutôt que de tout mettre "en dur" dans le code.

Adaptation possible

Ce type d'outil de supervision minimaliste est utilisé dans tous les services IT. En l'enrichissant (alertes mail, SNMP), il deviendrait un vrai outil de monitoring utilisable en entreprise.

✏️ Cette SAÉ m'a montré que programmer, c'est 20% d'écriture et 80% de débogage. Ce n'est pas décourageant — c'est exactement ça qui rend le moment où ça fonctionne satisfaisant. J'ai aussi compris que la documentation officielle (docs.python.org) est souvent plus utile que les forums, même si elle est moins accessible au début.
Niveau de maîtrise estimé — AC visés de la SAÉ 15
DébutantEn cours d'acquisitionMaîtrisé
← Retour aux projets