Aller au contenu principal

Écrire un script Bash

Notions théoriques

Un script Bash est un fichier texte contenant une série de commandes que vous auriez normalement tapées dans le terminal. Lorsque vous exécutez le script, toutes les commandes qu'il contient sont exécutées à la suite. Cela peut être très utile pour automatiser des tâches répétitives.

Pour créer un script Bash, vous commencez par créer un nouveau fichier texte, qui se termine généralement par l'extension .sh.

  • La première ligne de ce fichier doit être #!/bin/bash. Cette ligne indique au système que le fichier est un script Bash et qu'il doit utiliser l'interpréteur Bash pour exécuter les commandes qu'il contient.

  • Ensuite, vous pouvez ajouter toutes les commandes que vous voulez exécuter. Chaque commande doit être sur une nouvelle ligne. Vous pouvez également ajouter des commentaires à votre script en commençant une ligne par un #. Les lignes commençant par un # ne sont pas exécutées.

Exemple pratique

Créons un script simple qui affiche "Bonjour le monde !". Ouvrez votre éditeur de texte préféré et créez un nouveau fichier appelé bonjour.sh:

#!/bin/bash
# Ceci est un commentaire
echo "Bonjour le monde !"

Enregistrez le fichier et fermez l'éditeur. Pour exécuter le script, vous devez d'abord lui donner la permission d'exécution avec la commande chmod +x bonjour.sh, puis vous pouvez l'exécuter avec ./bonjour.sh.

Tracer l'exécution du script (fichier log)

La génération d'un fichier log sous Linux en utilisant la redirection avec "maCommande >> monFichier.log" est une technique simple et efficace pour enregistrer la sortie d'une commande dans un fichier texte.

Voici une présentation de cette méthode :

Principe de base

La syntaxe "maCommande >> monFichier.log" permet de rediriger la sortie standard (stdout) d'une commande vers un fichier spécifié. L'utilisation des doubles chevrons ">>" indique que le contenu sera ajouté à la fin du fichier existant, sans écraser son contenu précédent[1].

Fonctionnement

  1. Exécution de la commande : "maCommande" est exécutée normalement.
  2. Redirection de la sortie : Au lieu d'afficher le résultat dans le terminal, la sortie est redirigée vers "monFichier.log".
  3. Création ou mise à jour du fichier : Si "monFichier.log" n'existe pas, il est créé. S'il existe déjà, les nouvelles données sont ajoutées à la fin.

Avantages

  • Simplicité : Cette méthode est facile à mettre en œuvre et ne nécessite pas de configuration complexe.
  • Flexibilité : Elle peut être utilisée avec pratiquement n'importe quelle commande Linux.
  • Historique : Permet de conserver un historique des exécutions de la commande au fil du temps[1].

Exemple d'utilisation

date >> journal.log
echo "Sauvegarde effectuée" >> journal.log
ls -l /home/user >> journal.log

Cette approche est particulièrement utile pour :

  • le suivi des opérations de maintenance,
  • la journalisation des scripts,
  • ou simplement pour garder une trace des activités du système.

Test de mémorisation/compréhension


Que fait la première ligne d'un script Bash ?


Comment exécutez-vous un script Bash ?


Comment ajoutez-vous un commentaire à un script Bash ?


Que fait la commande 'chmod +x script.sh' ?


Que fait la commande 'echo' dans un script Bash ?



TP pour réfléchir et résoudre des problèmes

**Objectif : ** Sauvegarder tous les fichiers de vos sites Internet

Pour ce TP, vous allez écrire un script Bash qui :

  • crée un nouveau répertoire de sauvegarde,
  • copie tous les fichiers de vos sites Internet,
  • puis crée une archive de ce nouveau répertoire.
astuce

Vous pourrez utiliser ce script dans les prochaines séances pour sauvegarder les fichiers de votre serveur.

remarque

Si vous n'avez pas encore de site Internet dans votre serveur, c'est à dire que le dossier /var/www n'existe pas, il vous suffit d'installer Apache.

  1. Se déplacer dans votre répertoire personnel.
  2. Créez un nouveau répertoire sh dans votre répertoire personnel.
  3. Se déplacer dans le répertoire sh.
  4. Dans le répertoire sh, créez un nouveau fichier appelé backup.sh.
  5. Ajoutez la première ligne qui indique au système que le fichier est un script Bash, avec la commande #!/bin/bash.
  6. Ajoutez une commande pour créer un nouveau répertoire appelé backup dans /home/sio.
  7. Ajoutez une commande pour créer, dans le répertoire backup, une archive backup.tar.gz du répertoire du répertoire /var/www.
  8. Donnez la permission d'exécution au script :
    chmod +x backup.sh
  9. Exécutez le script (avec sudo).
    sudo ./backup.sh
  10. Vérifiez que le script a bien fonctionné en listant le contenu du répertoire backup et en vérifiant que l'archive backup.tar.gz existe : avec la commande ls -la :
    sudo ls -la /home/sio/backup/

    Le fichier backup.tar.gz est il présent et à la date d'aujourd'hui ?

astuce

N'oubliez pas, la pratique est la clé pour maîtriser une nouvelle compétence. Donc, si vous n'avez pas réussi du premier coup, ne vous découragez pas et essayez à nouveau.

Une solution