Issue
| Fiche express | |
|---|---|
| Domaine | Bannière pré-connexion / gabarits d'en-tête de script |
| Fichier | /etc/issue (console locale, avant login)
|
| Parsing d'options | getopt
|
| Voir aussi | Motd · Bash · Debug shell |
/etc/issue est le texte affiché sur une console locale (texte ou série) juste avant l'invite d'identification — à ne pas confondre avec /etc/motd qui s'affiche après authentification. La plupart des serveurs SSH n'affichent pas /etc/issue par défaut. Cette page regroupe deux techniques connexes utilisées dans les scripts d'administration : les bannières d'en-tête de script (dans le même esprit visuel qu'un /etc/issue personnalisé) et un squelette de script avec parsing d'options en ligne de commande.
Bannière d'en-tête de script
Convention courante pour documenter un script directement dans sa sortie console au démarrage — nom, auteur, date, historique de versions — via un heredoc affiché en tête d'exécution :
#!/bin/bash
#============================================================================
# TITRE DU SCRIPT
#============================================================================
clear
cat <<EOB
#===========================================================================#
MON TITRE
#===========================================================================#
Objet :
Environnement:
Créé par :
Date : 2026-01-10
Version : 0.1
#========*================*========================*=======================*
#Date * Auteur * Modification *
#========*================*========================*=======================*
EOB
echo -e "\nExécution...\n"
L'intérêt est surtout documentaire (traçabilité de version dans le script lui-même) ; sur un dépôt versionné (git), l'historique de modification tenu à jour à la main dans le heredoc fait double emploi avec le journal de commits et tend à ne plus être maintenu — à réserver aux scripts qui vivent hors contrôle de version.
Squelette de script avec parsing d'options (getopt)
Gabarit pour un script recevant des options courtes et longues (typique d'une sonde de supervision Nagios/Centreon avec seuils warning/critical) :
#!/bin/bash
APPNAME=$(basename "$0")
usage() {
cat <<EOU
Usage : $APPNAME [options]
Options :
-h | --help Affiche cette aide
-d | --debug Mode debug (set -x)
-v | --version VERSION Version du protocole (ex: 2c)
-C | --community NOM Communauté SNMP
-H | --host HOTE Nom ou IP de la machine cible
-w | --warning SEUIL Seuil warning
-c | --critical SEUIL Seuil critical
-f | --fonction NOM Fonction de vérification à utiliser
Exemple :
$APPNAME -v 2c -C public -H hote --fonction ma_fonction -w 1 -c 3
EOU
exit 3
}
[ $# -eq 0 ] && usage
# -o : options courtes ; ":" après une lettre = paramètre attendu
# -l : options longues, même convention
ARGS=$(getopt -o "dhC:v:H:f:w:c:" \
-l "debug,help,community:,version:,host:,fonction:,warning:,critical:" \
-n "$APPNAME" -- "$@") || exit 1
eval set -- "$ARGS"
while true; do
case "$1" in
-h|--help) usage ;;
-d|--debug) set -x; shift ;;
-C|--community) COMMUNITY=$2; shift 2 ;;
-v|--version) VERSION=$2; shift 2 ;;
-H|--host) HOST=$2; shift 2 ;;
-f|--fonction) FONCTION=$2; shift 2 ;;
-w|--warning) WARNING=$2; shift 2 ;;
-c|--critical) CRITICAL=$2; shift 2 ;;
--) shift; break ;;
esac
done
Ce squelette n'est qu'un canevas : la fonction de sortie ci-dessous suppose que la fonction métier ($FONCTION) positionne au préalable une des variables CHECK_OK/CHECK_WARN/CHECK_CRIT et les libellés LABEL_OUT_* — rien de tout ça n'est fourni par le canevas lui-même, c'est à la fonction métier de le faire.
EXIT_OK=0; EXIT_WARN=1; EXIT_CRIT=2; EXIT_UNKNOWN=3
exit_return() {
if [ "$CHECK_CRIT" = 1 ]; then RETVAL=$EXIT_CRIT; echo "$LABEL_OUT_CRIT"
elif [ "$CHECK_WARN" = 1 ]; then RETVAL=$EXIT_WARN; echo "$LABEL_OUT_WARN"
elif [ "$CHECK_OK" = 1 ]; then RETVAL=$EXIT_OK; echo "$LABEL_OUT_OK"
else RETVAL=$EXIT_UNKNOWN; echo "Erreur : aucun état déterminé"
fi
exit "$RETVAL"
}
case "$FONCTION" in
ma_fonction) ma_fonction ;;
*) usage ;;
esac
Ce type de sortie à 4 niveaux (OK/WARNING/CRITICAL/UNKNOWN) correspond à la convention des plugins Nagios/Centreon.
Voir aussi
- Motd — bannière post-connexion, à ne pas confondre avec
/etc/issue - Debug shell —
set -xet journalisation d'un script - Bash — syntaxe générale, structures
case