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é ».
On documente les codes du script : par exemple 0 succès, 1 erreur d'usage, 2 échec de la sauvegarde.
Les protections de Bash
| 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 |
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 pipefailettrap … EXITpour fiabiliser Bash.- On planifie (cron, timer, planificateur) puis on vérifie l'exécution planifiée.
- Un script se versionne et se documente.