- Présentation et objectifs
- Choix techniques
- Membres du groupe
- Réalisation des tâches
- Difficultés / Solutions / Améliorations
Le but de ce projet est de produire un script Bash ou Powershell, qui permette de se connecter sur un ordinateur distant et d’effectuer un ensemble de tâches via un menu accessible sur le shell.
- Créer un script qui s’exécute sur une machine et effectue des tâches sur des machines distantes :
- Depuis Windows Server vers Windows
- Depuis Debian vers Ubuntu
- Rédiger la documentation de configuration des environnements et de l’exécution du script
- Présenter le projet
- Depuis un serveur Debian, cibler une machine Windows ou depuis Windows Server 2022, cibler une machine Ubuntu
- Nom : CLIWIN01
- Compte utilisateur : wilder (dans le groupe des admins locaux)
- Mot de passe : Azerty1*
- Adresse IP fixe : 172.16.10.20/24
- Nom : CLILIN01
- Compte utilisateur : wilder (dans le groupe sudo)
- Mot de passe : Azerty1*
- Adresse IP fixe : 172.16.10.30/24
- Nom : SRVWIN01
- Compte : Administrator (dans le groupe des admins locaux)
- Mot de passe : Azerty1*
- Adresse IP fixe : 172.16.10.5/24
- Nom : SRVLX01
- Compte : root
- Mot de passe : Azerty1*
- Adresse IP fixe : 172.16.10.10/24
Rôles du groupe | SPRINT 1 | SPRINT 2 | SPRINT 3 | SPRINT 4 |
---|---|---|---|---|
Scrum Master | Saddem | Karim | Philippe | Angel |
Product Owner | Angel | Saddem | Karim | Philippe |
Technicien 1 | Philippe | Angel | Saddem | Karim |
Technicien 2 | Karim | Philippe | Angel | Saddem |
Les scripts Bash et Powershell contiennent chacun 19 actions, toutes exécutées via SSH. Voici les taux de réalisation de chacun d'eux :
Cible |
Tâche |
Bash |
PowerShell |
---|---|---|---|
Utilisateur | Afficher la liste des utilisateurs | ✅ | ✅ |
Utilisateur | Créer un utilisateur | ✅ | ✅ |
Utilisateur | Modifier le mot de passe d'un utilisateur | ✅ | ✅ |
Utilisateur | Supprimer un utilisateur | ✅ | ✅ |
Ordinateur | Lister les services actifs | ✅ | ✅ |
Ordinateur | Démarrer un service | ✅ | ✅ |
Ordinateur | Arrêter un service | ✅ | ✅ |
Ordinateur | Afficher les partitions des disques | ✅ | ✅ |
Ordinateur | Version du système | ✅ | ✅ |
Ordinateur | Rechercher et appliquer les mises à jour | ✅ | ❌ |
Ordinateur | Lister les mises à jour | ✅ | ✅ |
Ordinateur | Mettre à jour le système | ✅ | ❌ |
Ordinateur | Arrêter un ordinateur | ✅ | ✅ |
Ordinateur | Redémarrer un ordinateur | ✅ | ✅ |
Utilisateur | Informations sur un utilisateur | ✅ | ✅ |
Ordinateur | Informations sur un ordinateur | ✅ | ✅ |
Ordinateur | Consulter les logs | ✅ | ✅ |
Utilisateur | Consulter les infos utilisateur | ✅ | ✅ |
Ordinateur | Consulter les infos de l'ordinateur | ✅ | ✅ |
- Notre première difficulté a été de prendre du recul et de réfléchir aux différentes fonctionnalités que nous souhaitions implémenter dans le script. La première semaine nous avons démarrer le script Bash avec comme objectif de pouvoir se connecter sur la machine distante et de faire quelques actions dessus. Mais à un moment donné nous avons réalisé qu'il était important de réaliser le squelette du script pour bien ordonner nos idées et savoir de quoi seraient composés les différents menu. Cette étape que nous avons réalisé en fin de semaine 1 a véritablement posé les bases de tout ce que nous avons fait ensuite.
- Une autre difficulté a été de se connecter en SSH sans mot de passe, que ce soit avec Bash ou Powershell (essais toujours en cours sur Powershell). Nous avons fait beaucoup de manipulations, principalement de la modification de fichiers, et cela nous a pris de nombreuses heures.
- En règle général l'écriture du script a été marquée par de très nombreux soucis techniques :
- Commandes qui ne fonctionne pas car :
- la syntaxe est juste mais un élément manquant empêche la bonne exécution de la commande
- le PC distant n'a pas la configuration requise pour exécuter la commande (manque un module par exemple)
- Intégration difficile de Dialog dans Bash
- pour améliorer l'expérience utilisateur nous avons choisi d'utiliser Dialog, qui permet un affichage plus convivial et intuitif que celui proposé dans un menu basique. Sauf que nous l'avons implémenter alors que nous avions déjà rédigé la majeure partie de notre script. L'intégration de Dialog s'est avérée difficile, car elle imposait que revoir en profondeur chaque fonction pour s'afficher correctement. Et c'était notamment le cas lorsqu'il fallait afficher des informations renvoyées par le cient, comme par exemple la liste des utilisateur. Si cela avait été à refaire, nous aurions directement débuté notre script Bash avec Dialog, et cela nous a servi de leçon avec Powershell, puisque le module FZF a été adopté et intégré dès les premières lignes du script.
- Intégration difficle d'une recherche par nom partiel dans Bash : il nous a fallu plusieurs heures de tests pour obtenir qu'un nom partiel tapé dans le terminal renvoie tous les comptes comportant les lettres saisies. Et pouvoir ensuite sélectionner celui de notre choix.
- En règle générale nous avons réussi à trouver une solution pour chaque problème rencontré. Cela s'est fait au prix de nombreuses recherches sur internet et de nombreux tests sur nos VM. Nous nous sommes par exemple documentés pour trouver les commandes à implémenter dans le script, améliorer notre syntaxe, ou encore ajouter des éléments que nous aurions oublié.
- La création d'un fichier temporaire
$tempfile
pour récupérer les infos renvoyées par le PC distant et les afficher correctement dans Dialog a été très utile et nous a servi dans de nombreuses fonctions.
- Finaliser toutes les commandes sur Powershell
- Implémenter de nouvelles commandes pour Bash et Powershell
- Renforcer les tests de variables de chaque fonction pour prendre en compte tous les cas de figure
- Réussir à se connecter sans mot de passe en ssh sur Powershell
- Améliorer la navigation dans le menu avec un fil d'Ariane comme sur un site web
- Se connecter à une machine équipée d'un autre OS (nous n'avons pas eu le temps de le mettre en place)