diff --git a/init.sh b/init.sh index adda863..c6a0f9d 100755 --- a/init.sh +++ b/init.sh @@ -40,42 +40,6 @@ function_exists prnt || ( exit 2 ) -# Vérifie qu'on soit root -if [[ $EUID -ne 0 ]]; - prnt E "Ce script doit être démarré en tant que root. Arrêt." - die 1 --force -fi - -# =========================== -# ==== Log file creation ==== -# =========================== - - # Variables globales importantes -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 -exec 3>&1 4>&2 -trap 'exec 2>&4 1>&3' 0 1 2 3 -exec 1>$LOGFILE 2>&1 - -# Récupère la configuration -prnt I "Chargement de la configuration..." -if [[ -e $MYPATH/conf/$HOSTNAME.conf ]]; then - prnt I "Une configuration spécifique sera utilisé." - . $MYPATH/conf/$HOSTNAME.conf -else - if [[ -e $MYPATH/conf/init.conf.sh ]]; then - prnt I "Une configuration générique sera utilisé." - . $MYPATH/conf/init.conf.sh - else - prnt E "Aucune configuration trouvée, impossible de continuer." - die 2 --force - fi -fi - # ================================ # ==== Main program functions ==== # ================================ @@ -123,14 +87,14 @@ EOF # Show version infos show_version() { - echo -e "${White}init.sh${DEFAULTCOL} version ${Green}$VERSION${DEFAULTCOL}" + 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$modname:\t ${!version}" + echo -e "\t$BWhite$modname${DEFAULTCOL}: $BGreen${!version}$DEFAULTCOL" done } @@ -140,8 +104,6 @@ get_mod_name() echo $(basename $1 | cut -f 1 -d '.') } - - # ====================== # ==== Main Program ==== # ====================== @@ -149,7 +111,7 @@ get_mod_name() # Processing command line options want_module=false for opt in $@; do - if [[ want_module == false ]]; then + if [[ $want_module == false ]]; then case $opt in "-h"|"--help") disp_help @@ -158,6 +120,7 @@ for opt in $@; do "-v"|"--version") show_version exit 0 + ;; "-m"|"--module") want_module=true ;; @@ -186,7 +149,7 @@ for opt in $@; do ;; esac else - if [[ ! MANUAL_MODULE_LIST ]]; then + if [[ ! $MANUAL_MODULE_LIST ]]; then MANUAL_MODULE_LIST=$opt want_module=false else @@ -196,6 +159,40 @@ for opt in $@; do fi fi done + +# À ce stade on vérifie qu'on soit root +# (--help et --version sont autorisés en user normal) +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 +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 +exec 3>&1 4>&2 +trap 'exec 2>&4 1>&3' 0 1 2 3 +exec 1>$LOGFILE 2>&1 + +# Récupère la configuration +prnt I "Chargement de la configuration..." +if [[ -e $MYPATH/conf/$HOSTNAME.conf ]]; then + prnt I "Une configuration spécifique sera utilisé." + . $MYPATH/conf/$HOSTNAME.conf +else + if [[ -e $MYPATH/conf/init.conf.sh ]]; then + prnt I "Une configuration générique sera utilisé." + . $MYPATH/conf/init.conf.sh + else + prnt E "Aucune configuration trouvée, impossible de continuer." + die 2 --force + fi +fi + if [[ $want_module == true ]]; then prnt E "La liste des modules à exécuter est manquante !" die 1 --force diff --git a/lib/aaa_errors.sh b/lib/aaa_errors.sh index 1a4da4a..8c2a80d 100644 --- a/lib/aaa_errors.sh +++ b/lib/aaa_errors.sh @@ -20,8 +20,8 @@ function terminate() prnt E "$1 reçu, sortie immédiate." die 128 --force } -trap terminate 'Ctrl + C' SIGINT -trap terminate 'SIGTERM' SIGTERM +trap "terminate 'Ctrl + C'" SIGINT +trap "terminate 'SIGTERM'" SIGTERM function error() { @@ -49,7 +49,7 @@ function error() die $error_code } # Trigger error function on error -trap error ${LINENO} ERR +trap "error ${LINENO}" ERR # Print a backtrace function backtrace diff --git a/lib/display.sh b/lib/display.sh index 1727c88..7878089 100644 --- a/lib/display.sh +++ b/lib/display.sh @@ -23,7 +23,7 @@ export BYellow='\e[1;33m' export BBlue='\e[1;34m' export BPurple='\e[1;35m' export BCyan='\e[1;36m' -export BWhite='\e[1;37m'* +export BWhite='\e[1;37m' # Underline export UBlack='\e[4;30m' diff --git a/log/init-pc-levasseur-2021-06-23-170328+0200.log b/log/init-pc-levasseur-2021-06-23-170328+0200.log new file mode 100644 index 0000000..07b559d --- /dev/null +++ b/log/init-pc-levasseur-2021-06-23-170328+0200.log @@ -0,0 +1,3 @@ +mercredi 23 juin 2021, 17:03:28 (UTC+0200) [ info ] Chargement de la configuration... +mercredi 23 juin 2021, 17:03:28 (UTC+0200) [ info ] Une configuration générique sera utilisé. +./init.sh: ligne 161: erreur de syntaxe près du symbole inattendu « ) » diff --git a/log/init-pc-levasseur-2021-06-23-170407+0200.log b/log/init-pc-levasseur-2021-06-23-170407+0200.log new file mode 100644 index 0000000..aca587d --- /dev/null +++ b/log/init-pc-levasseur-2021-06-23-170407+0200.log @@ -0,0 +1,3 @@ +mercredi 23 juin 2021, 17:04:07 (UTC+0200) [ info ] Chargement de la configuration... +mercredi 23 juin 2021, 17:04:07 (UTC+0200) [ info ] Une configuration générique sera utilisé. +./init.sh: ligne 161: erreur de syntaxe près du symbole inattendu « ) » diff --git a/log/init-pc-levasseur-2021-06-23-170830+0200.log b/log/init-pc-levasseur-2021-06-23-170830+0200.log new file mode 100644 index 0000000..cc39ff6 --- /dev/null +++ b/log/init-pc-levasseur-2021-06-23-170830+0200.log @@ -0,0 +1,9 @@ +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ info ] Chargement de la configuration... +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ info ] Une configuration générique sera utilisé. +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ ERREUR ] Une liste de module à déjà été fournie ! +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ ERREUR ] La ligne de commande ne tolère qu'un paramètre --module. +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ Attention ] On continue malgrés l'erreur #1. +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ ERREUR ] Ce script doit être démarré en tant que root. Arrêt. +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ Attention ] On continue malgrés l'erreur #1. +mercredi 23 juin 2021, 17:08:30 (UTC+0200) [ info ] That's all folks ! +Après vérification des logs, vous devriez redémarrer la machine... diff --git a/log/init-pc-levasseur-2021-06-23-171005+0200.log b/log/init-pc-levasseur-2021-06-23-171005+0200.log new file mode 100644 index 0000000..68840d0 --- /dev/null +++ b/log/init-pc-levasseur-2021-06-23-171005+0200.log @@ -0,0 +1,4 @@ +mercredi 23 juin 2021, 17:10:05 (UTC+0200) [ info ] Chargement de la configuration... +mercredi 23 juin 2021, 17:10:05 (UTC+0200) [ info ] Une configuration générique sera utilisé. +mercredi 23 juin 2021, 17:10:05 (UTC+0200) [ info ] That's all folks ! +Après vérification des logs, vous devriez redémarrer la machine... diff --git a/modules/conf_disks.sh b/modules/conf_disks.sh index 63d9945..5b5ae13 100644 --- a/modules/conf_disks.sh +++ b/modules/conf_disks.sh @@ -1,6 +1,6 @@ # Configuration du disque de calcul -export VER_conf_disk="0.0.4" +export VER_conf_disks="0.0.5" # ------------------------------------------------------------------------------ # Cas de ZFS @@ -32,7 +32,7 @@ conf_zfs() done fi - if [[ zpool create zcalc -m /calcul/$HOSTNAME $CALCLEVEL $opt $CALCDRV ]]; then + if [[ $(zpool create zcalc -m /calcul/$HOSTNAME $CALCLEVEL $opt $CALCDRV) ]]; then # On active la compression par défaut zpool set zcalc compression=lz4 @@ -72,7 +72,7 @@ conf_xfs() # ------------------------------------------------------------------------------ -conf_disk() +conf_disks() { [[ $STOP_CONF_DISK ]] && return 0 @@ -83,16 +83,15 @@ conf_disk() prnt I "Installation des outils de partitionnement..." pkginst parted - - conf_$CALCTYPE && ( - prnt I "Attribution des droits sur le disque de calcul." - chown -Rv $MAINUSER:$MAINUSER /calcul/$HOSTNAME - ) - else + + conf_$CALCTYPE && ( + prnt I "Attribution des droits sur le disque de calcul." + chown -Rv $MAINUSER:$MAINUSER /calcul/$HOSTNAME + ) } # ------------------------------------------------------------------------------ -precheck_conf_disk() +precheck_conf_disks() { if [[ ! $(type -t conf_$CALCTYPE) == "function" ]]; then prnt E "Format de disque inconnu ($CALCTYPE) !" @@ -110,7 +109,8 @@ precheck_conf_disk() if [[ $FORCEBLANK=="true" ]]; then prnt W "Le disque $drv sera réinitialisé !" else - prnt E "La réinitialisation de $drv n'est pas autorisé, rien ne sera fait !" + prnt E "La réinitialisation de $drv n'est pas autorisé, \ + rien ne sera fait !" export STOP_CONF_DISK=1 fi fi @@ -128,5 +128,5 @@ precheck_conf_disk() } -export -f conf_disk -export -f precheck_conf_disk +export -f conf_disks +export -f precheck_conf_disks diff --git a/modules/install_mk-agent.sh b/modules/install_mkagent.sh similarity index 100% rename from modules/install_mk-agent.sh rename to modules/install_mkagent.sh diff --git a/modules/install_pkg.sh b/modules/install_pkg.sh index 5975e04..4f21a90 100644 --- a/modules/install_pkg.sh +++ b/modules/install_pkg.sh @@ -1,4 +1,4 @@ -# Install des paquets -- Debian et Ubuntu +# Installation des paquets export VER_install_pkg="0.0.1"