Activité : Automatiser des tâches avec Bash

Situation

Dans le cadre du développement d’application web, vous devez recréer la base de données de votre environnement de développement à chaque modification du schéma. Vous devez pour cela répéter un certain nombre de commandes : supprimer la base de données existante, créer la nouvelle base de données et charger les données de test.

Consigne

Suivez les instructions ci-après et effectuez les tâches demandées.

Objectifs

À la fin de ce travail, vous devez :

  1. Connaître les commandes Bash pour la manipulation des fichiers et des répertoires (cd, ls, pwd, touch, cat, less, head, tail, mkdir, rm, cp, mv, find, chmod, chown).
  2. Connaître les commandes Bash permettant de lire et d’écrire dans la console (read, echo, printf).
  3. Être capable d’utiliser des commandes et des variables pour réaliser un script.
  4. Être capable d’effectuer une action de manière conditionnelle à l’aide de l’instruction if.
  5. Être capable d’utiliser des variables d’environnements (export)

Résultat attendu

  • Un bref rapport qui décrit votre travail et votre démarche.
  • Votre script bash.

Ressources

Documents :

Logiciel :

  • Machine virtuelle de développement
  • Visual Studio Code
  • Émulateur de terminal

Mise en route

Pour effectuer ce travail, vous avez besoin d’une machine équipée d’un système d’exploitation GNU/Linux. Afin que tous puissent travailler dans les mêmes conditions, nous vous proposons d’utiliser une machine virtuelle.

Avant de commencer, assurez-vous d’être connecté au LAN avec un câble ethernet afin de réduire le temps de téléchargement de la machine. Lorsque vous êtes connecté, ouvrez une fenêtre de terminal sans privilège, rendez-vous dans le répertoire où vous stockez vos projets et lancez les commandes ci-dessous pour récupérer et lancer la machine virtuelle.

1
2
3
4
git clone https://gitlab.epai-ict.ch/m133/dev-vm.git
cd dev-vm
vagrant up
vagrant ssh-config > ssh.conf

Lorsque la machine est prête, assurez-vous d’être dans le répertoire dev-vm et lancez la commande pour ouvrir une session :

1
vagrant ssh

Veuillez noter que la machine n’a pas d’interface utilisateur graphique et ne peut donc être utilisée qu’en ligne de commande. En outre, les composants logiciels suivants sont déjà installés :

  • Vim (éditeur de texte)
  • OpenJdk 11
  • Maven
  • MariaDB (mysql -u root -pepai123)

Enfin, le répertoire ~/projects (le sous répertoire projets du répertoire home de l’utilisateur vagrant) correspond au répertoire de projet de votre machine physique. Vous pouvez donc non seulement accéder aux fichiers qui s’y trouvent depuis la machine virtuelle, mais aussi les modifier ou en ajouter.

Tâches

Bash

Vous devez commencer par vous familiariser avec le bash et en particulier avec les commandes suivantes : cd, ls, pwd, touch, cat, less, head, tail, mkdir, rm, cp, mv, find, chmod, chown, sudo. Assurez-vous de savoir utiliser ces commande avant de poursuivre.

Attention : la commande rm supprime les fichiers de manière définitive, il n’est pas possible de récupérer ce que vous avez effacé. Assurez-vous d’avoir un backup (une copie) de votre répertoire de projet de votre machine physique avant de commencer.

Éditeur Vim

Vim est un éditeur en mode texte qui s’exécute avec la commande vi (ou vim). Il est très utile lorsque le système que vous utilisez n’a pas d’interface graphique. Afin de vous familiariser avec cet outil, nous vous proposons de suivre le tutoriel intégré. Pour cela, lancez la commande suivante dans la session ssh de votre machine virtuelle :

1
vimtutor

Automatiser la création

Pour éviter d’avoir à taper sans cesse les mêmes commandes dans la fenêtre du terminal, on vous charge d’automatiser la procédure de création de la base de données. Pour cela vous devez réaliser un script bash qui effectuer les actions suivantes :

  1. Demander le mot de passe à l’utilisateur (attention à l’écho des caractères à l’écran).
  2. Supprimer la base de données existante.
  3. Créer la base de données avec le script SQL de création.
  4. Insérer les données de test avec le script SQL d’insertion des données de test (cela ne doit pas être le même que celui qui permet de créer la base de données !).

Demande de confirmation

Modifier votre script pour y ajouter la fonctionnalité suivante : si la base de données existe déjà, le script doit demander une confirmation à l’utilisateur avant de supprimer et de recréer la base de données.

Utilisation de variables d’environnement

Afin de permettre l’utilisation de votre script sans interaction avec l’utilisateur, modifier votre script pour utiliser le mot de passe et la confirmation qui se trouve dans les variables d’environnement CREATE_DB_PASSWORD et CREATE_DB_CONFIRMATION. Si les variables n’existent pas, le script doit demander les informations à l’utilisateur.