Écrire des scripts Bash pour automatiser votre workflow

Les scripts Bash sont très utiles pour automatiser un grand nombre de tâches dans votre workflow, de la gestion des fichiers au déploiement d’applications en passant par la surveillance des systèmes. Dans ce guide, je vais vous montrer comment écrire des scripts Bash pour automatiser diverses tâches courantes que vous pouvez rencontrer.

1. Automatiser les sauvegardes de fichiers

Un des cas d’utilisation les plus courants pour les scripts Bash est la sauvegarde de fichiers. Voici un exemple de script qui crée une archive d’un répertoire et la sauvegarde dans un dossier spécifique avec une date unique dans le nom.

Exemple de script : Sauvegarde de fichiers

bashCopierModifier#!/bin/bash

# Répertoire à sauvegarder
SOURCE_DIR="/home/user/Documents"
BACKUP_DIR="/home/user/backups"

# Vérification si le répertoire de sauvegarde existe
if [ ! -d "$BACKUP_DIR" ]; then
    echo "Le répertoire de sauvegarde n'existe pas. Création..."
    mkdir -p "$BACKUP_DIR"
fi

# Créer une archive avec la date actuelle
DATE=$(date +%Y-%m-%d)
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"

# Créer l'archive
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"

# Afficher un message de confirmation
echo "Sauvegarde terminée : $BACKUP_FILE"

Explication du script :

  1. Le script vérifie d’abord si le répertoire de sauvegarde existe. S’il n’existe pas, il est créé.
  2. Le script génère un nom de fichier de sauvegarde avec la date actuelle pour éviter les conflits.
  3. Il crée une archive .tar.gz du répertoire source et l’enregistre dans le répertoire de sauvegarde.
  4. Le script affiche un message de confirmation à la fin.

2. Automatiser le nettoyage des fichiers temporaires

Un autre cas fréquent est le nettoyage des fichiers temporaires pour libérer de l’espace disque. Ce script supprimera tous les fichiers temporaires d’un répertoire donné.

Exemple de script : Nettoyage des fichiers temporaires

bashCopierModifier#!/bin/bash

# Répertoire des fichiers temporaires
TEMP_DIR="/home/user/tmp"

# Vérification si le répertoire existe
if [ -d "$TEMP_DIR" ]; then
    # Supprimer les fichiers temporaires
    rm -rf "$TEMP_DIR"/*
    echo "Les fichiers temporaires ont été supprimés."
else
    echo "Le répertoire des fichiers temporaires n'existe pas."
fi

Explication du script :

  1. Le script vérifie si le répertoire des fichiers temporaires existe.
  2. Si c’est le cas, il supprime tous les fichiers présents dans ce répertoire.
  3. Si le répertoire n’existe pas, il affiche un message d’erreur.

3. Automatiser l’envoi de notifications par e-mail

Vous pouvez utiliser Bash pour envoyer des notifications par e-mail. Ce script envoie un e-mail de notification si un fichier spécifique est trouvé.

Exemple de script : Envoi d’un e-mail de notification

bashCopierModifier#!/bin/bash

# Chemin du fichier à surveiller
FILE="/home/user/Documents/important_file.txt"

# Vérification si le fichier existe
if [ -f "$FILE" ]; then
    echo "Le fichier $FILE existe. Envoi d'une notification par e-mail."
    echo "Le fichier $FILE a été trouvé" | mail -s "Notification: Fichier trouvé" user@example.com
else
    echo "Le fichier $FILE n'a pas été trouvé."
fi

Explication du script :

  1. Le script vérifie si un fichier spécifique existe.
  2. Si le fichier est trouvé, une notification par e-mail est envoyée avec un sujet et un message.
  3. Si le fichier n’est pas trouvé, un message d’erreur est affiché.

4. Automatiser la surveillance de l’espace disque

Ce script surveille l’espace disque et envoie une alerte si l’utilisation du disque dépasse un certain seuil.

Exemple de script : Surveillance de l’espace disque

bashCopierModifier#!/bin/bash

# Seuil d'utilisation du disque (en pourcentage)
THRESHOLD=80

# Vérifier l'espace disque
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')

# Comparer l'usage avec le seuil
if [ $USAGE -gt $THRESHOLD ]; then
    echo "Alerte : L'utilisation du disque est à $USAGE%" | mail -s "Alerte d'espace disque" user@example.com
else
    echo "L'espace disque est sous contrôle. Utilisation actuelle : $USAGE%"
fi

Explication du script :

  1. Le script récupère l’espace disque utilisé avec la commande df.
  2. Il compare l’utilisation actuelle avec un seuil défini (80 % dans cet exemple).
  3. Si l’utilisation dépasse le seuil, une alerte par e-mail est envoyée.
  4. Sinon, un message de confirmation est affiché.

5. Automatiser les mises à jour du système

Pour automatiser les mises à jour de votre système, vous pouvez utiliser un script Bash qui met à jour votre système avec les dernières versions des paquets.

Exemple de script : Mise à jour du système

bashCopierModifier#!/bin/bash

# Mettre à jour la liste des paquets
sudo apt update

# Mettre à jour tous les paquets installés
sudo apt upgrade -y

# Nettoyer les paquets inutiles
sudo apt autoremove -y

echo "Mise à jour du système terminée."

Explication du script :

  1. Le script met à jour la liste des paquets avec sudo apt update.
  2. Il met ensuite à jour tous les paquets installés avec sudo apt upgrade.
  3. Enfin, il nettoie les paquets inutiles avec sudo apt autoremove.

6. Planifier l’exécution automatique avec cron

Si vous souhaitez exécuter ces scripts automatiquement à intervalles réguliers, vous pouvez utiliser cron, qui permet de planifier des tâches répétitives.

  1. Éditer le crontab : Pour éditer le fichier crontab et ajouter une tâche planifiée, utilisez la commande suivante :bashCopierModifiercrontab -e
  2. Ajouter une tâche cron : Par exemple, pour exécuter un script tous les jours à 3h du matin, ajoutez la ligne suivante dans le fichier crontab :bashCopierModifier0 3 * * * /path/to/automatisation.sh Cette ligne exécute le script automatisation.sh tous les jours à 3h00.

7. Exemple d’un script complet d’automatisation

Voici un exemple d’un script Bash qui sauvegarde un répertoire, nettoie les fichiers temporaires, et envoie une notification par e-mail à la fin.

bashCopierModifier#!/bin/bash

# Répertoires à traiter
SOURCE_DIR="/home/user/Documents"
BACKUP_DIR="/home/user/backups"
TEMP_DIR="/home/user/tmp"
EMAIL="user@example.com"

# Sauvegarder les fichiers
DATE=$(date +%Y-%m-%d)
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"

# Nettoyer les fichiers temporaires
rm -rf "$TEMP_DIR"/*

# Envoi de notification par e-mail
echo "La sauvegarde et le nettoyage ont été effectués avec succès." | mail -s "Automatisation Terminée" $EMAIL

echo "Tâche automatisée terminée."

Conclusion

Les scripts Bash sont une excellente façon d’automatiser vos tâches quotidiennes et d’améliorer votre workflow. Avec les exemples ci-dessus, vous pouvez automatiser la sauvegarde de fichiers, le nettoyage de répertoires, la surveillance de l’espace disque et bien plus encore. En combinant ces scripts avec des outils comme cron, vous pouvez planifier des tâches et les laisser s’exécuter automatiquement sans intervention manuelle.

carle
carle