Aller au contenu

Cours – Scripts d'exploitation

BTS SIO SISR 2e année – Bloc 2 – S09

Un mot ou un sigle inconnu ? Passe la souris dessus, ou ouvre le glossaire.

Un administrateur répète les mêmes gestes : sauvegarder, nettoyer les journaux, vérifier les disques. Un script d'exploitation les exécute à sa place, de la même façon, à heure fixe, et dit ce qui s'est passé. Mais un script qui échoue sans prévenir est pire qu'une tâche oubliée : il donne un faux sentiment de sécurité.


1. Ce qui fait un script d'exploitation fiable

Qualité Concrètement
Paramétrable Les chemins et durées sont des arguments, pas écrits en dur
Défensif Il vérifie ses prérequis avant d'agir (le dossier existe, l'espace suffit)
Il échoue bruyamment Il s'arrête à la première erreur et renvoie un code de retour non nul
Il nettoie après lui Pas d'archive à moitié écrite laissée sur le disque
Il journalise Une ligne par étape, avec la date, lisible plus tard
Idempotent ou sûr à relancer Relancer ne détruit rien
Documenté et versionné En-tête (usage, codes de retour), dépôt Git (S08)

2. Codes de retour

Toute commande renvoie un code de retour ($?) : 0 signifie succès, toute autre valeur signifie échec. C'est ce qu'utilisent le planificateur, la supervision (S11) et les autres scripts pour savoir si « ça a marché ».

./sauvegarde.sh /srv/donnees /sauvegardes 7
echo $?          # 0 : succès

On documente les codes du script : par exemple 0 succès, 1 erreur d'usage, 2 échec de la sauvegarde.

Les protections de Bash

set -euo pipefail
Option Effet
-e Arrête le script dès qu'une commande échoue
-u Erreur si on utilise une variable non définie (évite rm -rf "$DOSSIER/" avec DOSSIER vide)
-o pipefail Un | échoue si n'importe quelle commande du tube échoue

trap commande EXIT exécute une commande à la sortie du script, quel que soit le motif (succès ou erreur) : c'est l'endroit pour nettoyer.


3. Journaliser

Moyen Usage
Fichier de journal echo "$(date) message" >> fichier.log : simple, local
logger Envoie le message au journal système : logger -t sauvegarde "message", relu avec journalctl -t sauvegarde
Sortie standard et d'erreur Le planificateur peut les rediriger vers un fichier (>> fichier 2>&1)

Un bon message : horodaté, qui (le script), quoi (la source), résultat.


4. Planifier

Outil Système Principe
cron Linux Une ligne minute heure jour mois jour-semaine commande
Minuteur systemd (timer) Linux Une unité .timer qui lance une unité .service ; journalisation intégrée
Planificateur de tâches Windows schtasks ou Register-ScheduledTask
30 minute 0 à 59 2 heure 0 à 23 * jour du mois 1 à 31 * mois 1 à 12 1-5 jour de la semaine 0 à 7 commande /usr/local/bin/sauvegarde.sh /srv/donnees /sauvegardes 7 0 et 7 désignent tous deux le dimanche
30 2 * * 1-5 : à 02:30 du lundi au vendredi, quel que soit le jour du mois et le mois.

Pièges classiques de cron.

  • L'environnement est minimal : mets des chemins absolus partout.
  • Les messages sont perdus si on ne redirige pas la sortie.
  • Le script s'exécute avec les droits de l'utilisateur de la crontab.
  • Un script qui marche à la main peut échouer sous cron : on teste une exécution planifiée à court délai avant de faire confiance.

Test flash. Que signifie */10 8-18 * * 1-5 ?

Voir la réponse

Toutes les 10 minutes, de 8 h à 18 h (jusqu'à 18 h 50), du lundi au vendredi, tous les jours du mois et tous les mois.


5. Bash et PowerShell

Bash (Linux) PowerShell (Windows)
Idée Le texte circule entre les commandes Des objets circulent entre les commandes
Arrêt sur erreur set -e $ErrorActionPreference = "Stop"
Code de retour exit 2 exit 2
Journal logger, fichier Write-EventLog, Add-Content
Planification cron, timer schtasks, planificateur

Les principes (paramètres, vérification, code de retour, journal) sont identiques dans les deux langages.

Ce que tu dois retenir de la séance

  • Un script d'exploitation est paramétrable, défensif, journalisé et échoue bruyamment.
  • 0 = succès ; set -euo pipefail et trap … EXIT pour fiabiliser Bash.
  • On planifie (cron, timer, planificateur) puis on vérifie l'exécution planifiée.
  • Un script se versionne et se documente.