Aller au contenu principal

Sur la machine srv-lin-01. Lire le ticket, agir dans le terminal, puis vérifier.

Ticket 7782, ouvert par Thomas Legrand, responsable informatique : mardi, Samir a voulu restaurer un compte rendu d'analyse de l'eau que le laboratoire d'autocontrôle avait supprimé par erreur. Les trois dernières archives de /mnt/sauvegarde sont tronquées : le disque de sauvegarde était plein depuis samedi. Le journal /var/log/sauvegarde-cr.log dit pourtant « reussie » chaque nuit, et la supervision, qui lit ce journal chaque matin et alerte sur toute ligne contenant le mot ERREUR, n'a rien signalé.

Corriger le script /opt/scripts/sauvegarde-cr.sh, lancé chaque nuit par cron, pour qu'il échoue franchement. Sur une panne, disque de sauvegarde plein ou dossier des comptes rendus absent, il doit s'arrêter avec un code de sortie non nul, écrire dans son journal une ligne qui contient ERREUR, et ne plus y écrire « reussie ». Sans panne, la sauvegarde doit se faire comme avant.

Rappel

Le chapitre appelle « échec franc » la garantie qu'un script s'arrête à la première erreur et le dise. En PowerShell, c'est $ErrorActionPreference = 'Stop' avec un try/catch ; en bash :

  • chaque commande rend un code de sortie, 0 si elle a réussi, un autre nombre sinon ; echo $? affiche celui de la dernière commande ;
  • set -e arrête le script dès qu'une commande échoue, set -u dès qu'une variable n'est pas définie, et set -o pipefail fait échouer un tube dès que l'une de ses commandes échoue, au lieu de ne regarder que la dernière ; les trois s'écrivent ensemble set -euo pipefail, en tête du script ;
  • trap 'commande' ERR exécute la commande chaque fois qu'une autre échoue, juste avant que set -e n'arrête le script : c'est le catch de bash ;
  • étape || { commande; exit 1; } n'exécute le bloc qu'en cas d'échec de l'étape.

Le script s'ouvre avec sudo nano /opt/scripts/sauvegarde-cr.sh (Ctrl+O enregistre, Ctrl+X referme), et bash -x le lance en affichant chaque commande exécutée.

Boîte à outils

Un clic écrit la commande au curseur, sans la lancer.

Indications

Indication 2
Indication 3

Le ticket se prépare dès que la machine est prête.