Applez Nous: +41 22 518 70 00
L’écriture de scripts shell en environnement d’entreprise ne tolère aucune approximation. Tout script d’exploitation doit intégrer un mode strict dès son en-tête pour stopper l’exécution à la moindre anomalie :
#!/usr/bin/env bash
# Mode strict pour l'exploitation en production :
set -euo pipefail
IFS=$'
'
# -e : Arrête le script immédiatement si une commande retourne un code d'erreur != 0
# -u : Déclenche une erreur si une variable non définie est invoquée
# -o pipefail : Empêche une erreur masquée au sein d'un pipeline de commandes (cmd1 | cmd2)
# IFS : Définit les séparateurs par défaut sur saut de ligne et tabulation (évite les bugs liés aux espaces)
L’administrateur système manipule en permanence des flux de données non structurés pour extraire des informations d’audit ou réécrire des fichiers de configuration :
# sed : Remplacement ciblé par expressions régulières (Regex)
# Remplacer un paramètre dans un fichier sans écraser le reste
sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config
# awk : Analyse tabulaire par colonnes et filtrage conditionnel
# Lister les utilisateurs humains (UID >= 1000) et leur shell
awk -F':' '$3 >= 1000 && $3 < 60000 { printf "Utilisateur: %-15s UID: %-5d Shell: %s
", $1, $3, $7 }' /etc/passwd
# Calculer la consommation totale de RAM d'un ensemble de processus
ps aux | grep '[n]ginx' | awk '{ sum += $6 } END { printf "RAM totale NGINX: %.2f Mo
", sum/1024 }'
Fournissez une interface ergonomique et documentée à vos outils d'exploitation grâce au mécanisme natif getopts :
#!/usr/bin/env bash
usage() {
echo "Usage: $0 -d <répertoire> -retention <jours> [-v]"
exit 1
}
VERBOSE=0
while getopts ":d:r:v" opt; do
case "${opt}" in
d) TARGET_DIR="${OPTARG}" ;;
r) RETENTION_DAYS="${OPTARG}" ;;
v) VERBOSE=1 ;;
*) usage ;;
esac
done
if [[ -z "${TARGET_DIR:-}" ]] || [[ -z "${RETENTION_DAYS:-}" ]]; then
usage
fi
Assurez la suppression des fichiers temporaires même si l'utilisateur interrompt le script avec Ctrl+C :
TMP_FILE=$(mktemp /tmp/audit_sys.XXXXXX)
cleanup() {
rm -f "$TMP_FILE"
echo "[INFO] Nettoyage effectué avec succès."
}
trap cleanup EXIT INT TERM
Atelier Pratique : Concevez un script d'audit vérifiant le remplissage des disques. Si une partition dépasse 85%, le script génère un rapport horodaté dans
/var/log/disk-alerts.loget renvoie un code de sortie d'erreur documenté.