Recherche de site Web

5 scripts Bash que j'utilise quotidiennement en tant qu'administrateur système Linux


Si vous avez passé du temps à gérer des systèmes Linux, vous savez déjà à quel point certaines tâches peuvent être répétitives et chronophages. Qu'il s'agisse de vérifier l'espace disque, de redémarrer des services en panne ou de maintenir votre système à jour, tout faire manuellement devient rapidement un casse-tête, surtout si vous gérez plus d'un serveur.

Les scripts Bash sont comme de petits assistants qui vous aident à automatiser les tâches courantes, à réduire les erreurs humaines et à économiser un temps précieux. Au lieu d'exécuter les mêmes commandes encore et encore, vous pouvez laisser vos scripts s'en charger - de manière fiable et constante.

Au fil des ans, de nombreux administrateurs système ont créé et perfectionné des scripts pour surveiller les systèmes, automatiser la maintenance et répondre aux problèmes avant qu'ils ne deviennent des problèmes graves.

Dans cet article, vous découvrirez cinq scripts Bash simples mais puissants, utiles dans l'administration quotidienne des systèmes Linux. Ces scripts sont adaptés aux débutants et faciles à modifier pour votre propre environnement.

1. Script de surveillance de l'utilisation du disque

L'un des problèmes les plus courants sur les serveurs Linux est le manque d'espace disque. Les journaux se remplissent, les sauvegardes s'accumulent, et soudainement votre application plante parce que le serveur est à court d'espace. C'est pourquoi mon premier script vérifie l'utilisation du disque et envoie une alerte si l'utilisation dépasse une limite fixée (par exemple, 80%).

#!/bin/bash
THRESHOLD=80
EMAIL="[email "

df -hP | grep -vE '^Filesystem|tmpfs|cdrom' | while read line; do
  USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
  MOUNTPOINT=$(echo $line | awk '{print $6}')
  
  if [ $USAGE -ge $THRESHOLD ]; then
    echo "Warning: High disk usage on $MOUNTPOINT ($USAGE%)" | mail -s "Disk Alert: $HOSTNAME" $EMAIL
  fi
done

Ce script vérifie chaque partition, et si l'une d'entre elles dépasse le seuil de 80 %, je reçois un e-mail. Il m'aide à résoudre les problèmes avant qu'ils ne deviennent des soucis. J'exécute ce script via cron toutes les 6 heures.

2. Script d'automatisation de la mise à jour du système

Maintenir les systèmes à jour est crucial, en particulier pour les correctifs de sécurité. J'utilise ce simple script Bash pour mettre à jour automatiquement les paquets, nettoyer le système et m'envoyer un rapport.

#!/bin/bash
LOGFILE="/var/log/sys-updates.log"
EMAIL="[email "

echo "Starting updates on $(date)" >> $LOGFILE
apt update && apt upgrade -y >> $LOGFILE 2>&1
apt autoremove -y >> $LOGFILE 2>&1

tail -20 $LOGFILE | mail -s "System Update Report: $HOSTNAME" $EMAIL

(Pour les utilisateurs de RHEL/CentOS, remplacez simplement apt par les commandes yum ou dnf.)

Exécuter ce script via un job cron une fois par jour garde mes systèmes à jour et propres. Le rapport par e-mail me rassure que tout s'est bien passé. Si quelque chose se casse, je peux vérifier le fichier journal et revenir en arrière.

3. Script de vérification de l'état du service

En tant qu'administrateur système, j'ai besoin de savoir si des services clés comme Apache, Nginx ou MySQL tombent en panne. Ce script vérifie si un service spécifique est en cours d'exécution et, si ce n'est pas le cas, il le redémarre et me notifie.

#!/bin/bash
SERVICES=("apache2" "mysql")
EMAIL="[email "

for SERVICE in "${SERVICES[@]}"; do
  if ! systemctl is-active --quiet $SERVICE; then
    systemctl start $SERVICE
    echo "$SERVICE was down and has been restarted on $HOSTNAME" | mail -s "Service Restart Alert" $EMAIL
  fi
done

Ce script les vérifie toutes les 5 minutes via cron. Si un service est en panne, il le redémarre automatiquement et m'envoie un avertissement.

4. Script de sauvegarde pour les fichiers importants

Les sauvegardes sont ennuyeuses, jusqu'à ce que vous en ayez besoin. J'ai un script Bash personnalisé qui sauvegarde mes fichiers critiques (comme les fichiers web, les bases de données, les fichiers de configuration) et les stocke dans une archive compressée.

#!/bin/bash
BACKUP_DIR="/backup"
SOURCE_DIRS="/etc /var/www /home"
DATE=$(date +%F)
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
EMAIL="[email "

tar -czf $BACKUP_FILE $SOURCE_DIRS

if [ $? -eq 0 ]; then
  echo "Backup completed successfully: $BACKUP_FILE" | mail -s "Backup Success - $HOSTNAME" $EMAIL
else
  echo "Backup FAILED!" | mail -s "Backup Failed - $HOSTNAME" $EMAIL
fi

J'ai eu des utilisateurs qui ont accidentellement supprimé des choses importantes, et ce script m'a sauvé plus d'une fois. Je garde une semaine de sauvegardes et les fais tourner avec un autre script de nettoyage. Vous pouvez aussi télécharger les sauvegardes sur un serveur distant ou un stockage cloud pour plus de sécurité.

5. Script de surveillance des connexions utilisateur

Ce script vérifie l'activité de connexion des utilisateurs et vous alerte si quelqu'un se connecte, ce qui est particulièrement utile si vous gérez des serveurs de production et souhaitez suivre les accès.

#!/bin/bash
LOGFILE="/var/log/auth.log"
LAST_RUN_FILE="/tmp/last_run_time"
EMAIL="[email "

if [ ! -f $LAST_RUN_FILE ]; then
  date --date='5 minutes ago' +%s > $LAST_RUN_FILE
fi

LAST_RUN=$(cat $LAST_RUN_FILE)
NOW=$(date +%s)

awk -v last=$LAST_RUN -v now=$NOW '
  $0 ~ /session opened for user/ {
    cmd = "date -d \""$1" "$2" "$3"\" +%s"
    cmd | getline t
    close(cmd)
    if (t >= last && t <= now) { print $0 } } ' $LOGFILE | mail -s "Login Alert - $HOSTNAME" $EMAIL echo $NOW > $LAST_RUN_FILE

Ce script m'aide à savoir qui a accédé au serveur et quand. Il est excellent pour détecter des schémas d'accès inhabituels. Vous pouvez l'étendre pour bloquer des IP ou déclencher des alertes si nécessaire.

Conclusion

En conclusion, compter sur les scripts Bash dans ma routine quotidienne d'administrateur système a considérablement amélioré la façon dont je gère et maintiens les systèmes Linux. Ces scripts peuvent sembler simples en surface, mais ils prennent en charge des tâches cruciales qui maintiennent les serveurs stables, sécurisés et en bon fonctionnement.

Si vous cherchez à automatiser des contrôles complets de l'état du système (CPU, mémoire, disque, et plus), ne manquez pas mon autre guide : Comment automatiser les vérifications quotidiennes de santé Linux avec un script Bash + Cron