Recherche de site Web

Guide du débutant pour le scripting Shell pour les administrateurs système


Si vous commencez votre parcours dans le monde de l'administration système ou que vous souhaitez automatiser vos tâches sur Linux, alors apprendre le scripting shell est indispensable. Le scripting shell est un moyen puissant d'interagir avec le système d'exploitation et d'exécuter des tâches rapidement et efficacement.

Ce guide vous expliquera tout ce que vous devez savoir, des bases absolues aux concepts de script plus avancés que les administrateurs système utilisent au quotidien.

Qu'est-ce que le scripting Shell ?

Dans son essence, un script shell est un fichier texte simple qui contient une série de commandes que le shell doit exécuter, et un shell est un interpréteur de ligne de commande qui vous permet d'interagir avec le système d'exploitation.

Dans le contexte des systèmes d'exploitation Linux ou de type Unix, les shells les plus courants sont Bash (Bourne Again Shell) et Zsh (Z Shell).

Le scripting shell vous permet d'automatiser des tâches répétitives, de gérer les ressources système ou même d'installer et de configurer des logiciels. Vous pouvez le considérer comme le pont entre l'utilisateur et le système d'exploitation de l'ordinateur. Lorsque vous tapez des commandes dans le terminal, le shell traite ces commandes. Dans le scripting, vous pouvez regrouper ces commandes pour les exécuter toutes en même temps.

Cet article vous guidera depuis le scripting pour débutants jusqu'à des utilisations plus avancées, spécifiquement conçues pour ceux qui souhaitent éventuellement devenir administrateurs systèmes.

1. Les bases de la programmation shell

Avant de se lancer dans l'écriture de votre premier script, il est essentiel de comprendre les bases.

Écrire votre premier script

Pour écrire un script shell, tout ce dont vous avez besoin est un éditeur de texte comme nano, vim ou gedit. La première ligne de chaque script shell est appelée la ligne shebang, qui indique au système quel interpréteur utiliser pour exécuter le script.

#!/bin/bash

Sous le shebang, vous pouvez ajouter toutes les commandes que vous exécuteriez normalement dans le terminal.

Par exemple, pour afficher un message à l'utilisateur :

#!/bin/bash
echo "Hello, World!"

Enregistrez le fichier avec une extension .sh (par exemple, hello_world.sh).

Pour exécuter le script, vous devez le rendre exécutable.

chmod +x hello_world.sh

Une fois qu’il est exécutable, vous pouvez exécuter le script avec :

./hello_world.sh

Félicitations ! Vous venez d'écrire et d'exécuter votre premier script shell, qui est simple, mais c'est la base de toute programmation shell.

2. Variables et saisie dans le scripting Shell

L'une des fonctionnalités les plus utiles dans le scripting shell est la capacité d'utiliser des variables, qui stockent des valeurs pouvant être utilisées plus tard dans le script. Vous pouvez également accepter des entrées utilisateur et les stocker dans des variables.

Déclarer des variables

Les variables dans le script shell sont simples à déclarer ; il n'y a pas de types comme dans d'autres langages de programmation (c'est-à-dire, entier, chaîne). Dans le script, tout est traité comme une chaîne par défaut.

#!/bin/bash
name="Alice"
echo "Hello, $name!"

Ce script déclare une variable name et stocke la valeur "Alice". La commande echo affichera “Hello, Alice !” dans le terminal.

Prendre des entrées de l'utilisateur

Pour obtenir une entrée de l'utilisateur, vous pouvez utiliser la commande read.

#!/bin/bash
echo "Enter your name:"
read name
echo "Hello, $name!"

Voici ce qui se passe :

  • Le script affiche l'invite « Entrez votre nom : ».
  • La commande read attend une entrée de l'utilisateur et la stocke dans le nom de la variable.
  • Le script affiche ensuite "Hello, $name!", en remplaçant $name par l'entrée que l'utilisateur a donnée.

Utilisation des arguments de ligne de commande

Les scripts shell acceptent des arguments depuis la ligne de commande, qui sont transmis au script lorsqu'il est exécuté.

#!/bin/bash
echo "Hello, $1!"

Ici, $1 représente le premier argument passé au script.

./greet.sh Alice

Sortie prévue:

Hello, Alice!

Vous pouvez accéder à plus d'arguments en utilisant $2, $3, et ainsi de suite. $0 fait référence au nom du script.

3. Structures de contrôle dans le scripting

Les structures de contrôle telles que if, for et while permettent à vos scripts de prendre des décisions et de répéter des tâches.

Les instructions If

L'instruction if est utilisée pour prendre des décisions dans les scripts, comme vérifier si un répertoire existe.

#!/bin/bash
echo "Enter a directory name:"
read dir

if [ -d "$dir" ]; then
  echo "The directory $dir exists."
else
  echo "The directory $dir does not exist."
fi

Dans ce script :

  • Le -d vérifie si le répertoire existe.
  • Le script affiche différents messages selon que le répertoire existe ou non.

Utilisation des boucles

Les boucles sont utiles pour répéter des actions plusieurs fois.

Boucle For :

La boucle suivante s'exécute 5 fois et affiche le numéro de l'itération à chaque fois.

#!/bin/bash
for i in {1..5}
do
  echo "This is loop number $i"
done

Boucle Tant Que

La boucle while continuera de s'exécuter tant que la condition est vraie.

#!/bin/bash
counter=1
while [ $counter -le 5 ]
do
  echo "This is loop number $counter"
  ((counter++))
done

4. Travailler avec les fichiers et les répertoires

L'une des utilisations les plus courantes des scripts shell est l'automatisation des opérations sur les fichiers et les répertoires, comme la création de fichiers, le déplacement de fichiers ou la vérification des permissions des fichiers, ce qui rend les scripts shell extrêmement utiles pour gérer ces tâches.

Créer des fichiers sous Linux

Vous pouvez utiliser la commande touch pour créer un nouveau fichier vide :

#!/bin/bash
touch newfile.txt

Déplacer et renommer des fichiers

Pour déplacer ou renommer un fichier, vous pouvez utiliser la commande mv :

#!/bin/bash
mv newfile.txt oldfile.txt 

Vérification des autorisations de fichier

Vous pouvez vérifier les permissions des fichiers en utilisant la commande ls :

#!/bin/bash
echo "Enter the filename:"
read file
ls -l $file

5. Concepts avancés pour les administrateurs système

À mesure que vous deviendrez plus expérimenté en script shell, vous commencerez à utiliser des concepts plus avancés. Ceux-ci sont particulièrement utiles pour les administrateurs système qui doivent gérer des serveurs, configurer des services et gérer des tâches complexes.

Utilisation des fonctions dans les scripts

Les fonctions dans les scripts shell vous permettent de regrouper du code pour le réutiliser, rendant vos scripts plus propres et plus faciles à maintenir.

#!/bin/bash

function greet {
  echo "Hello, $1!"
}

greet "Alice"
greet "Bob"

Ce script définit une fonction greet qui prend un argument et affiche un message de salutations. Elle est appelée deux fois, une fois avec “Alice” et une fois avec “Bob.”

Gestion des erreurs dans les scripts

La gestion des erreurs est cruciale pour des scripts robustes, surtout dans un contexte d'administration système. Vous pouvez vérifier si une commande a réussi en vérifiant la variable $?, qui stocke le statut de sortie de la dernière commande exécutée.

#!/bin/bash

echo "Attempting to create a directory..."
mkdir /some/directory

if [ $? -eq 0 ]; then
  echo "Directory created successfully."
else
  echo "Failed to create directory."
fi

Dans ce script :

  • Le $? vérifie le succès de la commande mkdir.
  • Si la commande a réussi ($? -eq 0), elle affiche un message de succès ; sinon, elle affiche un message d'erreur.

6. Planification des tâches avec Cron

En tant qu'administrateur système, vous devrez souvent exécuter des scripts à des moments planifiés, et l'utilitaire cron vous permet d'automatiser cela en exécutant des scripts à des intervalles spécifiques ; voici comment configurer un travail cron :

Ouvrez votre fichier crontab pour l'édition en exécutant :

crontab -e

Ajoutez une ligne spécifiant le programme et le script à exécuter tous les jours à 3 heures du matin.

0 3 * * * /path/to/your/script.sh

La syntaxe pour les tâches cron est :

minute hour day month weekday command

Cette commande indique à cron d'exécuter le script à 3h00 tous les jours.

Conclusion

Le scripting Shell est une compétence essentielle pour toute personne travaillant avec des systèmes de type Unix, en particulier pour ceux qui envisagent une carrière en administration système, car il permet d'automatiser des tâches et de simplifier les flux de travail en apprenant les bases telles que les variables, les boucles, les conditionnels et la gestion des fichiers – tout en progressant vers des sujets plus complexes comme les fonctions, la gestion des erreurs et la planification des tâches cron.

Que vous gériez un serveur web, automatisiez des sauvegardes ou rédigiez des scripts de configuration système, maîtriser le scripting shell vous fera gagner du temps, réduira les erreurs et fera de vous un administrateur système plus efficace. Alors, continuez à expérimenter, à écrire des scripts et, surtout, amusez-vous !