# ------------------------------------------------------------------------------ # Base support function # This file is part of the init.sh project # Copyright (c) 2019-2022 Geoffray Levasseur # ------------------------------------------------------------------------------ # This file is distributed under 3-clause BSD license. # The complete license agreement can be obtained at: # https://opensource.org/licenses/BSD-3-Clause # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ # Display help disp_help() { cat << EOF Usage: init.sh [OPTIONS] [-m|--module ] Initialise une machine pour l'intégrer à un réseau. Options : -f, --file Permet de spécifier un fichier de configuration à charger manuellement. Cette option peut être répétée pour permettre le chargement de plusieurs fichiers de configuration, le dernier surchargeant les précédants. -m, --module Lance les modules indiqués même s'il ne sont pas dans les fichiers de configuration. Les noms des modules doivent être séparés par des virgules. -c, --check-only Lance les procédures de vérification sans rien modifier. -j, --jump Saute les procédures de vérification des modules. -k, --keep-going Continue l'execution en cas d'erreur. -r, --resume Reprend l'execution là ou elle s'est arrêté. -R, --no-root-check Ne pas vérifier les droits root (ou UID 0) -P, --no-proxy Ne pas utiliser de proxy lors de l'utilisation de ce script (n'empêche pas leur configuration via modules) -D, --no-deps Ne pas vérifier les dépendances entre les modules. -h, --help Affiche ce texte d'aide. -s, --shell Lance un shell avec tout l'environnement du script pour débogage. Aucune action ou vérification n'est faite en dehors des commandes lancées dans le shell. --chroot Permet à init de ne pas appliquer les modifications au système de fichier racine mais à un système différent. -l, --logfile Nom du fichier de log. Peut aussi être changé via la variable d'environnement LOGFILE. -v, --version Affiche la version de ce script et celles de tous les modules disponibles. Attention : les options courtes ne sont pas concaténable. Variable d'environnement : LOGFILE Stocke le nom complet du fichier de log qui sera produit. Fichiers de configuration : Le fichier de configuration principal fournira les détails nécessaires au déploiement de la nouvelle machine. Il doit se situer dans le répertoire conf/ à coté du script init.sh. Si un fichier appelé "hostname.sh" existe (ou hostname est le nom d'hote), alors il sera le fichier de configuration principal. Dans le cas contraire, le nom générique "init.conf.sh" sera recherché. En l'absence de fichier de configuration ce script ne pourra pas fonctionner. Veuiller consulter les fichiers de configuration fournis en exemple pour avoir un aperçu des paramêtres disponibles. EOF } export -f disp_help # ------------------------------------------------------------------------------ # Show version infos show_version() { echo -e "${BWhite}init.sh${DEFAULTCOL} version ${BGreen}$VERSION${DEFAULTCOL}" echo && separator && echo echo "Available modules:" local mod= for mod in $MYPATH/modules/*.sh; do # Ran in a subshell to not pollute environment ( . $mod local modname=$(get_mod_name $mod) local version=VER_$modname echo -e "\t$BWhite$modname${DEFAULTCOL}: $BGreen${!version}$DEFAULTCOL" unset modname version ) done unset mod if [[ $(id -u) -ne 0 ]]; then echo -e "\n${BYellow}Warning:$DEFAULTCOL That script requires superuser rights to work." fi } export -f show_version # EOF