É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.
Fonctionnement
- Exécution de la commande : "maCommande" est exécutée normalement.
- Redirection de la sortie : Au lieu d'afficher le résultat dans le terminal, la sortie est redirigée vers "monFichier.log".
- 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.
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
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.
Vous pourrez utiliser ce script dans les prochaines séances pour sauvegarder les fichiers de votre serveur.
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.
- Se déplacer dans votre répertoire personnel.
- Créez un nouveau répertoire
sh
dans votre répertoire personnel. - Se déplacer dans le répertoire
sh
. - Dans le répertoire
sh
, créez un nouveau fichier appelébackup.sh
. - Ajoutez la première ligne qui indique au système que le fichier est un script Bash, avec la commande
#!/bin/bash
. - Ajoutez une commande pour créer un nouveau répertoire appelé
backup
dans/home/sio
. - Ajoutez une commande pour créer, dans le répertoire
backup
, une archivebackup.tar.gz
du répertoire du répertoire/var/www
. - Donnez la permission d'exécution au script :
chmod +x backup.sh
- Exécutez le script (avec
sudo
).sudo ./backup.sh
- Vérifiez que le script a bien fonctionné en listant le contenu du répertoire
backup
et en vérifiant que l'archivebackup.tar.gz
existe : avec la commandels -la
:sudo ls -la /home/sio/backup/
Le fichier
backup.tar.gz
est il présent et à la date d'aujourd'hui ?
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
Vous devez être connecté pour voir le contenu.