Les systèmes d’exploitation sont généralement livrés avec une forme de langage de script que les administrateurs et les utilisateurs expérimentés peuvent utiliser pour créer des outils personnalisés. Unix et Linux ne sont pas différents et proposent de nombreuses options différentes. La colle qui maintient ensemble de nombreux projets Linux est constituée de scripts Bash. Ces scripts simples à créer, mais incroyablement puissants, peuvent tout faire, de la sauvegarde à distance de systèmes de fichiers entiers à la création d’un flash LED.
Les scripts bash se comportent comme ceux des autres langages de programmation. Le code s’exécute ligne par ligne dans une séquence. Nous pouvons utiliser la logique conditionnelle (sélection) pour modifier le chemin emprunté par notre code et le code peut itérer et répéter l’exécution du code jusqu’à ce qu’une condition soit remplie ou indéfiniment.
Bash, le Bourne Again SHell est l’un des nombreux shells disponibles pour les utilisateurs Unix et Linux (Zsh, Ksh, Tcsh, Fish en sont d’autres) et est généralement installé avec de nombreuses distributions principales. Nous avons exécuté Kubuntu 21.10 lors de la rédaction de ce didacticiel, mais le même code fonctionnera également sur un Raspberry Pi (avec Raspberry Pi OS) ou presque toute autre distribution Linux.
Dans ce tutoriel, nous ferons nos premiers pas dans la création de scripts Bash avec trois exemples de projets. Le premier est le vénérable « Hello World », puis on apprend à créer des scripts interactifs, avant de finalement créer un vrai script pour vérifier l’état d’un site/serveur. Nous faisons ensuite un effort supplémentaire et apprenons à rendre nos scripts exécutables et disponibles à l’échelle du système.
Comment écrire un script Bash « Hello World »
Nous allons commencer simplement avec « Hello World ». Cela peut sembler trivial, mais un test hello world est utile pour comprendre le flux de travail de création d’un script Bash et pour tester les fonctionnalités de base. Nous utiliserons l’éditeur de texte nano, mais vous pouvez également écrire vos scripts dans un autre éditeur de texte basé sur un terminal ou une interface graphique.
1. Créez un nouveau fichier, hello.sh et ouvrez-le avec nano.
nano hello.sh
2. Sur la première ligne, spécifiez l’interpréteur à utiliser dans le code. Dans ce cas, c’est Bash.La première partie de la ligne, #!, s’appelle le « shebang » et indique le début d’un script.
#!/bin/bash
3. Sur une nouvelle ligne utiliser écho imprimer une chaîne de texte à l’écran.
echo “Hello World”
4. Enregistrez le code en appuyant sur CTRL + X, puis appuyez sur Y et Entrée.
5. Exécutez le code depuis le terminal.
bash hello.sh
La sortie de la commande est une seule ligne de « Hello World ». Cela prouve que notre script fonctionne et nous pouvons passer à quelque chose d’un peu plus intéressant.
Capturer l’entrée de l’utilisateur dans les scripts bash
Bash est un langage entièrement formé, et avec lui, nous pouvons créer des outils et des applications interactifs. Dans cet exemple, nous allons créer un générateur de salutations qui capturera le nom d’utilisateur, puis choisira une salutation aléatoire parmi un tableau de salutations.
1. Créez un nouveau fichier, random-greetings.sh en utilisant nano.
nano random-greetings.sh
2. Sur la première ligne, spécifiez l’interpréteur à utiliser dans le code. Dans ce cas, c’est Bash.
#!/bin/bash
3. Ajoutez un écho pour imprimer un message à l’utilisateur.
echo "Welcome to the Tom's Hardware Greeting Generator"
4. Lire la saisie au clavier de l’utilisateur, en utilisant une invite pour poser une question à l’utilisateur. L’entrée de l’utilisateur est enregistrée dans une variable Nom.
read -p "What is your name?: " name
5. Créer un tableau salutation qui stockera cinq salutations. Un tableau est une liste d’éléments stockés avec un numéro d’index. En utilisant le nom du tableau et le numéro d’index, nous pouvons extraire des éléments (salutations) du tableau.
greeting[0]="Hola"
greeting[1]="Greetings"
greeting[2]="How do"
greeting[3]="Hey there"
greeting[4]="Howdy"
6. Créer une variable Taille qui stockera le nombre d’éléments dans le tableau.
size=$#greeting[@]
7. Créer une variable indice et stocker un nombre choisi au hasard entre zéro et la taille du tableau, dans ce cas cinq éléments.
index=$(($RANDOM % $size))
8. Utilisez echo pour imprimer le message d’accueil choisi au hasard avec le nom de l’utilisateur.
echo $greeting[$index] $name
9. Enregistrez le code en appuyant sur CTRL + X, puis appuyez sur Y et Entrée.
dix. Exécutez le code depuis le terminal. Suivez les instructions pour voir le message d’accueil.
bash random-greetings.sh
Utiliser des arguments avec des scripts bash
La beauté du terminal est que nous pouvons passer des arguments, des instructions ou des paramètres supplémentaires à une commande. Dans cet exemple, nous allons écrire un script bash pour vérifier le statut d’une URL, passée en argument.
1. Créer un nouveau fichier site-check.sh et ouvert nano.
nano site-check.sh
2. Sur la première ligne, spécifiez l’interpréteur à utiliser dans le code. Dans ce cas, c’est Bash.
#!/bin/bash
3. En utilisant écho, écrire un message à l’utilisateur pour l’informer du code de réponse HTTP actuel pour l’URL. La valeur de 1 $ est l’URL que nous avons spécifiée comme argument.
echo "The current HTTP response for " $1 " is..."
4. Créer une variable, réponse pour stocker la sortie du boucle commander. En utilisant le -rédiger argument, nous spécifions que nous voulons voir le code de réponse HTTP. Un autre argument, -silencieux garantira que nous ne voyons pas toute la sortie de la commande se répandre sur l’écran. Nous envoyons ensuite toute sortie résiduelle telle que des erreurs à /dev/null, essentiellement un trou noir pour les données. Enfin on utilise le 1 $ argument (notre URL à vérifier) pour terminer la commande.
response=$(curl --write-out "%http_coden" --silent --output /dev/null "$1")
5. Utiliser écho pour imprimer le code de réponse HTTP au terminal.
echo "$response"
6. Enregistrez le code en appuyant sur CTRL + X, puis appuyez sur Y et Entrée.
7. Exécutez le code depuis le terminal ; n’oubliez pas d’inclure un nom de domaine complet à vérifier.
bash site-check.sh https://tomshardware.com
Création d’un script Bash exécutable à l’échelle du système
À l’heure actuelle, nos scripts fonctionnent bien, mais ils ne sont pas disponibles dans tout le système en tant que fichier exécutable. Changeons cela. Pour cette dernière partie, nous allons convertir le script site-check.sh en une application que nous pouvons utiliser à partir de n’importe quel emplacement sur le lecteur.
Nous devons d’abord rendre le fichier exécutable, puis nous pouvons copier le fichier dans /usr/bin pour créer un exécutable disponible n’importe où.
1. Ouvrez une fenêtre de terminal et accédez à site-check.sh.
2. Utiliser chmod pour définir le fichier comme exécutable. L’argument +x spécifie que le fichier doit être exécutable.
chmod +x site-check.sh
3. Exécutez le script. En utilisant ./ nous demandons au terminal d’exécuter un fichier exécutable dans le répertoire courant.
./site-check.sh https://bigl.es
4. Copiez site-cehck.sh dans le /usr/bin/ répertoire et modifiez le nom du fichier cible pour supprimer l’extension .sh. Notez que nous devrons utiliser sudo comme /usr/bin Le répertoire n’appartient pas à notre utilisateur. Jetez un œil à notre tutoriel sur les autorisations des utilisateurs, des fichiers et des dossiers pour plus d’informations.
sudo cp site-check.sh /usr/bin/site-check
5. Cours vérification du site pour tester que la commande fonctionne comme prévu. N’oubliez pas d’inclure une URL à vérifier.