From 8df84bf19b9f256e3dbb1859c240ce0de5f5b4bf Mon Sep 17 00:00:00 2001 From: LeBartal Date: Tue, 11 Nov 2025 13:47:11 +0100 Subject: [PATCH] script enrichi avec cas erreurs --- AutoMaj/MAJ.ksh | 113 +++++++++++++++++++++++++++++++----------------- 1 file changed, 73 insertions(+), 40 deletions(-) mode change 100755 => 100644 AutoMaj/MAJ.ksh diff --git a/AutoMaj/MAJ.ksh b/AutoMaj/MAJ.ksh old mode 100755 new mode 100644 index da71609..8aaa22d --- a/AutoMaj/MAJ.ksh +++ b/AutoMaj/MAJ.ksh @@ -1,47 +1,80 @@ -#! /bin/bash -set -e +#!/bin/sh +# ------------------------------------------------------------ +# Mise à jour système – version POSIX sh +# ------------------------------------------------------------ -#@(#)############################################################## -#@(#) name: MAJ.ksh -#@(#) Description : Automatise les mises a jours Paquets + OS -#@(#) -#@(#)--------------------------------------------------------------------------- -#@(#) -#@(#) Auteur : Kevin GRANDFOND -#@(#) -#@(#) Date de création : 19/04/2023 -#@(#) -#@(#)--------------------------------------------------------------------------- -#@(#) Modifications -#@(#) -#@(#) 19/04/2023 - Création du script. -#@(#) -#@(#) A FAIRE : N/A -#@(#) -#@(#)############################################################## +# -e : quitter dès la première erreur +# -u : erreur lorsqu'une variable n'est pas définie +set -eu -# Mettre à jour la liste des paquets -echo " ### Mise à jour de la liste des paquets ### " -apt-get update -y -echo " Mise à jour -OK- " +# ---------- Couleurs (facultatives) ---------- +# Certaines consoles ne supportent pas tput, on prévoit un fallback vide. +RED=$(tput setaf 1 2>/dev/null || printf '') +GREEN=$(tput setaf 2 2>/dev/null || printf '') +YELLOW=$(tput setaf 3 2>/dev/null || printf '') +RESET=$(tput sgr0 2>/dev/null || printf '') -# Mettre à jour les paquets installés -echo " ### Mise à jour de la liste des paquets installés ### " -apt-get upgrade -y -echo " Mise à jour -OK- " +# ---------- Fonction de journalisation ---------- +log() { + # $1 = niveau (INFO|OK|ERR) + # $2 = message + case "$1" in + INFO) printf '%b[INFO] %s%b\n' "$YELLOW" "$2" "$RESET" ;; + OK) printf '%b[OK] %s%b\n' "$GREEN" "$2" "$RESET" ;; + ERR) printf '%b[ERROR] %s%b\n' "$RED" "$2" "$RESET" ;; + *) printf '[%s] %s\n' "$1" "$2" ;; + esac +} -# MAJ de l'OS -echo " ### Montee de version de l'OS ### " -apt-get dist-upgrade -y -echo " Mise à jour -OK- " +# ---------- Wrapper d’exécution de commande ---------- +run_cmd() { + # On exécute la commande passée en arguments séparés + # "$@" préserve les espaces éventuels dans chaque argument. + "$@" + rc=$? + if [ $rc -ne 0 ]; then + log ERR "Commande \"$*\" échouée (code $rc)" + exit $rc + else + log OK "Commande \"$*\" réussie" + fi +} -# Nettoyer les paquets obsolètes -echo " ### Suppression des paquets Obsolètes ### " -apt-get autoremove -y -echo " Mise à jour -OK- " +# ---------- Étapes de mise à jour ---------- +update_pkg_list() { + log INFO "Mise à jour de la liste des paquets…" + run_cmd apt-get update -y +} -# Nettoyer les caches de paquets -echo " ### nettoyage des caches des paquets ### " -apt-get clean -y +upgrade_installed() { + log INFO "Mise à jour des paquets déjà installés…" + run_cmd apt-get upgrade -y +} -echo "Mise à jour terminée avec succès." \ No newline at end of file +dist_upgrade_os() { + log INFO "Dist‑upgrade de l’OS…" + run_cmd apt-get dist-upgrade -y +} + +autoremove_obsolete() { + log INFO "Suppression des paquets obsolètes…" + run_cmd apt-get autoremove -y +} + +clean_cache() { + log INFO "Nettoyage du cache des paquets…" + run_cmd apt-get clean -y +} + +# ---------- Point d’entrée ---------- +main() { + update_pkg_list + upgrade_installed + dist_upgrade_os + autoremove_obsolete + clean_cache + log OK "Mise à jour terminée avec succès." +} + +# Lancer le script +main "$@"