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 -earrête le script dès qu'une commande échoue,set -udès qu'une variable n'est pas définie, etset -o pipefailfait é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 ensembleset -euo pipefail, en tête du script ;trap 'commande' ERRexécute la commande chaque fois qu'une autre échoue, juste avant queset -en'arrête le script : c'est lecatchde 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
Le ticket se prépare dès que la machine est prête.
Ce terminal ouvre une vraie machine Linux, srv-lin-01, qui tourne dans la page.
Environ 14 Mo à télécharger la première fois, et 300 Mo de mémoire. Sur un téléphone, le travail se fait à l'étroit : un ordinateur avec un clavier convient mieux.