conf_disk: bug fixes, splitted init function to library, language concistancy fixes
This commit is contained in:
92
init.sh
92
init.sh
@@ -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..."
|
||||
|
||||
Reference in New Issue
Block a user