conf_disk: bug fixes, splitted init function to library, language concistancy fixes

This commit is contained in:
fatalerrors
2021-07-02 18:11:26 +02:00
parent 6421af70c4
commit 7f7fa76391
9 changed files with 117 additions and 103 deletions

92
init.sh
View File

@@ -1,5 +1,5 @@
#!/bin/bash
# Init : initialise une machine et la met en conformité
# Init: initialise a computer and conform it
# Copyright (c) 2021 Geoffray Levasseur <geoffray.levasseur@obs-mip.fr>
# trace ERR through pipes
@@ -14,15 +14,20 @@ set -o errexit
# set +u : allow undeclared variables
set +o nounset
export VERSION="0.95.1"
# We want english messages
export LC_ALL=C
export LANG=C
# Stocke le chemin du script
# Version of init
export VERSION="0.95.2"
# Store script's path
export MYPATH=$(dirname $0)
# récupère le nom d'hote
# Get hostname
export HOSTNAME=$(hostname)
# Charge les bibliothèques
# Load libraries
for lib in $MYPATH/lib/*.sh; do
. $lib
done
@@ -43,72 +48,6 @@ function_exists prnt || (
exit 2
)
# ================================
# ==== Main program functions ====
# ================================
# Affiche l'aide
disp_help()
{
cat << EOF
Utilisation : init.sh [OPTIONS] [-m|--module <module1,...,moduleN>]
Initialise une machine pour l'intégrer à un réseau.
Options :
-m, --module <liste> Lance les modules indiqués même s'il ne sont pas
dans les fichiers de configuration.
-c, --check-only Lance les procédure de vérification préexecution
sans rien modifier.
-j, --jump Saute les procédures de vérification.
-k, --keep-going L'execution continura en cas d'erreur.
-r, --resume Reprend l'execution la ou elle c'est arrêté.
-h, --help Affiche ce texte d'aide.
-v, --version Show version of that script and version of all
available modules.
Attention : les options courtes ne sont pas concaténable.
Variable d'environnement :
LOGFILE Stocke le nom complet du fichier de log qui sera
utilisé.
Fichiers de configuration :
Le fichier de configuration principal fournira les détails nécessaire
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" (ou hostname est le nom d'hote) existe 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
}
# Show version infos
show_version()
{
echo -e "${BWhite}init.sh${DEFAULTCOL} version ${BGreen}$VERSION${DEFAULTCOL}"
echo ""
echo "Available modules:"
for mod in $MYPATH/modules/*.sh; do
. $mod
local modname=$(get_mod_name $mod)
local version=VER_$modname
echo -e "\t$BWhite$modname${DEFAULTCOL}: $BGreen${!version}$DEFAULTCOL"
done
[[ $EUID -ne 0 ]] &&
echo -e "\n${BYellow}Attention :$DEFAULTCOL Ce script requiert les droits d'administration pour fonctionner."
}
# Get module name from module file
get_mod_name()
{
echo $(basename $1 | cut -f 1 -d '.')
}
# ======================
# ==== Main Program ====
# ======================
@@ -171,27 +110,27 @@ for opt in $@; do
fi
done
# À ce stade on vérifie qu'on soit root
# (--help et --version sont autorisés en user normal)
# After this we need to be root
# (--help and --version are allowed as unprivileged user)
if [[ $EUID -ne 0 ]]; then
prnt E "Ce script doit être démarré en tant que root. Arrêt."
die 1 --force
fi
# Variables globales importantes
# Logfile variable treatment
export LOGFILE=${LOGFILE:-"$MYPATH/log/init-$(uname -n)-$(stdtime).log"}
prnt I "Création du répertoire d'accueil du fichier log..."
[[ ! -d $(dirname $LOGFILE) ]] && mkdir -pv $(dirname $LOGFILE)
# Log toutes les sortie dans le fichier de log
# Log all outputs to the logfile
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec > >(tee -a $LOGFILE)
exec 2> >(tee -a $LOGFILE >&2)
prnt I "Démarrage d'init version $VERSION."
# Récupère la configuration
# Load configuration
prnt I "Chargement de la configuration..."
if [[ -e $MYPATH/conf/$HOSTNAME.conf ]]; then
prnt I "Une configuration spécifique sera utilisé."
@@ -255,4 +194,3 @@ fi
prnt I "That's all folks !"
#echo "Après vérification des logs, vous devriez redémarrer la machine..."