[PROGRAMMER] Créer des outils et applications informatiques pour les R&T
par Kylian Adam
Apprentissages critiques
Niveau 2 — Développer une application R&T
AC23.01 | Automatiser l’administration système avec des scripts
AC23.02 | Développer une application à partir d’un cahier des charges donné, pour le Web ou les périphériques mobiles
AC23.03 | Utiliser un protocole réseau pour programmer une application client/serveur
AC23.04 | Installer, administrer un système de gestion de données
AC23.05 | Accéder à un ensemble de données depuis une application et/ou un site web
Niveau 1 — S’intégrer dans un service informatique
AC13.01 | Utiliser un système informatique et ses outils
AC13.02 | Lire, exécuter, corriger et modifier un programme
AC13.03 | Traduire un algorithme, dans un langage et pour un environnement donné
AC13.04 | Connaître l’architecture et les technologies d’un site Web
AC13.05 | Choisir les mécanismes de gestion de données adaptés au développement de l’outil et argumenter ses choix
AC13.06 | S’intégrer dans un environnement propice au développement et au travail collaboratif
Détails
Niveau 2
Durant mon stage j'ai réalisé des playbooks Ansible afin de déployer en masse des fonctionnalités de protection sur une flotte de switch de la CeA* (AC23.01), prenant en compte les modèles d'équipements et donc la diversité des commandes. J'ai mis en place une plateforme Gitea (AC23.04) pour collaborer et partager mes scripts, donnant des autorisations appropriées aux membres de l'équipe SINRT*, sur requête de l'authentification LDAP du domaine. J'ai détaillé mes réalisations (CE3.02) et, dans le sens de l'IaC, j'ai recommandé l'utilisation de MS VS Code (CE3.04) à mes collaborateurs.
Basé sur les exigences d'un client fictif, souhaitant explorer plusieurs possibilités (CE3.01), j'ai réalisé une interface graphique pour le client (AC23.02) permettant d'établir le transfert d'un code vers un serveur de calcul à l'aide de mon protocole (AC23.03) et de visualiser le traitement de celui-ci. J'ai utilisé GitHub (AC23.05) pour assurer une sauvegarde régulière (CE3.03) et l'évolution de ma solution client/serveur.
*CeA = Collectivité Européenne d'Alsace. *SINRT = Équipe Systèmes d'information et du numérique orienté Réseaux et Télécommunications de la CeA.
Niveau 1
J'ai documenté (CE3.02) un travail basé sur l'e-réputation, ce qui m'a amené à concevoir mon propre site web avec l'éditeur VSCode (CE3.04). Le site est un répertoire composé de plusieurs fichiers (AC13.04) : 5 HTML pour le contenu des pages (1 redirection langue, 2 français et 2 anglais), un CSS pour la mise en forme et quelques PNG pour l'icône de l'onglet et pour illustrer les pages.
J'ai aussi collaboré avec un autre étudiant sur GitHub (AC13.06) pour programmer un script d'attaque de l'homme du milieu en Python destiné à visualiser le trafic entre deux machines du réseau pour une utilisation dans un cadre de tests uniquement (CE3.03). Il s'agit d'un outil d'espionnage de communication conçu pour être exécuté sur le système d'exploitation Kali Linux (AC13.01) qui dispose d'un environnement adapté à ces usages. Avant cela, un programme d'échauffement en Python (AC13.03) récupérait l'adresse MAC d'une machine ciblée par son adresse IP de manière passive ou active (échange avec les machines) et permettait aussi de lister toutes les machines connectées au réseau. Nous avons dû lire, exécuter et modifier le programme plusieurs fois pour qu'il corresponde aux attentes (AC13.02).
Composantes essentielles
CE3.01 | en étant à l'écoute des besoins du client
CE3.02 | en documentant le travail réalisé
CE3.03 | en utilisant les outils numériques à bon escient
CE3.04 | en choisissant les outils de développement adaptés
CE3.05 | en intégrant les problématiques de sécurité
Traces
Niveau 2
Niveau 1
Comment m'améliorer
Niveau 2
Je trouve que j'ai passé trop de temps pour une solution client/serveur plutôt basique. Avec plus d'entraînement, même dans d'autres langages que Python, je pourrais être plus à l'aise pour développer et y prendre davantage plaisir dès que l'envie et le besoin se présentent.
Niveau 1
Nous avions choisi GitHub comme environnement de développement et de travail collaboratif car c'est le plus répandu. Il intègre beaucoup de fonctionnalités ; certains professionnels doivent même suivre une formation pour l'utiliser correctement. Pour ma part, je vais essayer d'apprendre par moi-même à l'utiliser de manière plus efficace : moins de Google Drive et plus de GitHub. Avec GitHub, soyons ouverts à partager avec tous — ainsi le monde progressera.
Mis à jour