"MaJ version socle"

This commit is contained in:
Doug Le Tough 2017-11-26 11:42:37 +01:00
parent d9ee13ad79
commit 9626de8b5f
2 changed files with 100 additions and 74 deletions

View File

@ -2,8 +2,8 @@
## Script : message.lib ## Script : message.lib
## Module Puppet : gnc-script_core_dtsi ## Module Puppet : gnc-script_core_dtsi
## Auteur : Emmanuel Confrere ## Auteur : Emmanuel Confrere
## Date : 29-06-2017 ## Date : 31-08-2017
## Version : 1.2.1 ## Version : 1.3.5
## Objet : Gestion des message sur la console et dans les divers fichiers de trace ## Objet : Gestion des message sur la console et dans les divers fichiers de trace
## ##
## Fonction : fct_message ## Fonction : fct_message
@ -37,28 +37,52 @@
# 1.2.0 13-04-2017 - Emmanuel Confrere - Evo : Journalisation du compte d execution dans l historique # 1.2.0 13-04-2017 - Emmanuel Confrere - Evo : Journalisation du compte d execution dans l historique
# 1.2.1 29-06-2017 - Emmanuel Confrere - Ano : Fonctionnement inattendu sous Bash 3.2.25 # 1.2.1 29-06-2017 - Emmanuel Confrere - Ano : Fonctionnement inattendu sous Bash 3.2.25
# la fonction logname ne renvoi rien ? # la fonction logname ne renvoi rien ?
# 1.2.2 20-11-2017 - Doug Le Tough - Evo : Modification du format de la date afin qu'il soit independant # 1.3.0 07-08-2017 - Emmanuel Confrere - Evo : Optimisation performance - Suppression des comparaisons de chaine.
# de la locale utilisee. # Correction Anomalie de l option -debug si mode interactif
# 1.3.1 10-08-2017 - Emmanuel Confrere - Ano : En mode interactif, l option debug ne limite pas l affichage
# en fonction du niveau positionnee sur le shell et celui du
# message !
# Correction et optimisation du traitement.
# 1.3.2 21/08/2017 - Emmanuel Confrere - Ano : En mode interactif affiche systematiquement les message debug
# de niveau zero. Meme si SH_NIV_DEBUG n est pas initialise !
# Correction pour que l affichage ne soit effectif que si
# la variable SH_NIV_DEBUG est initialise dans le shell courant.
# 1.3.3 31-08-2017 - Emmanuel Confrere - Ano : Dans le cas d un message contruit avec un tableau de cette facon ${A[@]}
# la libraire considere qu il sagit de plusieur argument et
# tronque le message.
# Pour corriger nous concatenons les messages avec un espace separateur.
# pour eviter la concatenation si cette derniere pose probleme
# presenter le message avec une variable tampon :
# B="${A[@]}"
# fct_message "coucou ${B} ..."
# 1.3.4 31-08-2017 - Emmanuel Confrere - Ano : Introduction d une anomalie !
# Erreur de syntaxe
# 1.3.5 31-08-2017 - Emmanuel Confrere - Ano : Introduction d une autre ano !
# Format de sortie modifier (ajout systematique d un espace)
##---------------------------------------------------------------------------- ##----------------------------------------------------------------------------
function fct_message function fct_message
{ {
local L_TEXT="" # Texte a afficher local L_TEXT="" # Texte a afficher
local L_TIME_STAMP=`date "+%Y%m%d %H:%M:%S"` # Horrodatage a ajouter au texte local L_TIME_STAMP=`date "+%x %X"` # Horrodatage a ajouter au texte
local L_EXISTE_REP local L_INTER=0 # Mode interactif 0->non, 1->oui
local L_EXISTE_REP # Controle l existance des repertoire de socle 0->OK 1->NOK
local L_NB_PARAM=0 # Nb de parametre de la ligne de commande local L_NB_PARAM=0 # Nb de parametre de la ligne de commande
local L_TMP local L_TMP
local L_TMP2 local L_TMP2
local L_OPT # Nom des option local L_OPT # Nom des option
local L_OPTION_DBG="non" # Message de debug local L_OPTION_DBG=0 # Message de debug
local L_OPTION_SID="" # Affichage du SH_SESSION_IDP a l ecran local L_OPTION_SID="" # Affichage du SH_SESSION_IDP a l ecran
local L_NIV_DEBUG=0 # Niveau de trace par defaut 0=aucune local L_NIV_DEBUG=0 # Niveau de trace par defaut 0=aucune
local L_OPTION_CPT="non" # Message de compte rendu local L_OPTION_CPT=0 # Message de compte rendu
local L_OPTION_HIST="non" # Message pour l historique local L_OPTION_HIST=0 # Message pour l historique
local L_COULEUR="" # Couleur du texte avec l option -color local L_COULEUR="" # Couleur du texte avec l option -color
local L_OPTION_COULEUR="non" local L_OPTION_COULEUR=0
local L_LIST_COULEUR="noir:0;30 rouge:0;31 vert:0;32 jaune:1;33 bleu:1;34 rose:0;35 cyan:0;36 gris:0;37 orange:0;33 blanc:1;37 " local L_LIST_COULEUR="noir:0;30 rouge:0;31 vert:0;32 jaune:1;33 bleu:1;34 rose:0;35 cyan:0;36 gris:0;37 orange:0;33 blanc:1;37 "
# - Mode interactif ?
[ -z "${SH_SESSION_ID}" ] && L_INTER=1
# - recuperation des parametres en entree # - recuperation des parametres en entree
L_TMP=1 L_TMP=1
L_NB_PARAM=$# L_NB_PARAM=$#
@ -66,10 +90,10 @@ while [ ${L_TMP} -le ${L_NB_PARAM} ]
do do
L_OPT="$1" L_OPT="$1"
case "${L_OPT}" in case "${L_OPT}" in
"-cpt") L_OPTION_CPT="oui" ;; "-cpt") L_OPTION_CPT=1 ;;
"-nolog") L_OPTION_NOLOG="oui" ;; "-nolog") L_OPTION_NOLOG=1 ;;
"-hist") L_OPTION_HIST="oui" ;; "-hist") L_OPTION_HIST=1 ;;
"-color") L_OPTION_COULEUR="oui" "-color") L_OPTION_COULEUR=1
L_ARG=`echo $2|tr A-Z a-z` L_ARG=`echo $2|tr A-Z a-z`
L_TMP2=${L_ARG:0:1} L_TMP2=${L_ARG:0:1}
if [ "${L_TMP2}" != "-" ] if [ "${L_TMP2}" != "-" ]
@ -77,12 +101,12 @@ do
# on recherche la correspondance numerique de la couleur # on recherche la correspondance numerique de la couleur
L_COULEUR=`echo ${L_LIST_COULEUR}|sed "s/.*${L_ARG}:\([0-1];3[0-7]\) .*/\1/"` L_COULEUR=`echo ${L_LIST_COULEUR}|sed "s/.*${L_ARG}:\([0-1];3[0-7]\) .*/\1/"`
# Si on ne la trouve pas on annule la colorisation # Si on ne la trouve pas on annule la colorisation
[ ${#L_COULEUR} -ne 4 ] && L_OPTION_COULEUR="non" [ ${#L_COULEUR} -ne 4 ] && L_OPTION_COULEUR=0
L_TMP=$(( ${L_TMP} + 1 )) L_TMP=$(( ${L_TMP} + 1 ))
shift shift
fi ;; fi ;;
"-debug") L_OPTION_DBG="oui" "-debug") L_OPTION_DBG=1
L_ARG="$2" L_ARG="$2"
L_TMP2=${L_ARG:0:1} L_TMP2=${L_ARG:0:1}
if [ "${L_TMP2}" != "-" ] if [ "${L_TMP2}" != "-" ]
@ -100,54 +124,47 @@ do
else else
L_NIV_DEBUG=1 L_NIV_DEBUG=1
fi fi
[ ${L_NIV_DEBUG} -gt ${SH_NIV_DEBUG} ] && return 0 ;; [ ${L_NIV_DEBUG} -gt 0${SH_NIV_DEBUG} -o -z "${SH_NIV_DEBUG}" ] && return 0 ;;
*) L_TEXT="${L_OPT}" ;; *) [ -z "${L_TEXT}" ] && L_TEXT="${L_OPT}" || L_TEXT="${L_TEXT} ${L_OPT}" ;;
esac esac
L_TMP=$(( ${L_TMP} + 1 )) L_TMP=$(( ${L_TMP} + 1 ))
shift shift
done done
# - controle que la fonction est lance depuis un shell # - Controle du mode d execution ...
if [ -z "${SH_SESSION_ID}" ] if (( ${L_INTER} ))
then then
# -- La fonction est executer en mode inetractif (Pas dans un shell) # -- La fonction est executer en mode interactif (Pas dans un script du socle)
# -- on autorise alors que l affichage sur la sortie standard # -- on autorise alors uniquement l affichage sur la sortie standard
SH_AFF_SID="non" L_EXISTE_REP=0
SH_SILENCE="non"
SH_NIV_DEBUG=0
L_EXISTE_REP=1
else else
# - Mode shell... # - Mode shell...
# - On control l'existance des repertoires # - On control l'existance des repertoires
[ -d ${NC_EXPL_HST} -a -d ${NC_EXPL_LOG} -a -d ${NC_EXPL_CPT} ] && L_EXISTE_REP=0 || L_EXISTE_REP=1 [ -d ${NC_EXPL_HST} -a -d ${NC_EXPL_LOG} -a -d ${NC_EXPL_CPT} ] && L_EXISTE_REP=1 || L_EXISTE_REP=0
fi fi
# - initialisation des variables # - initialisation des variables
[ "${SH_AFF_SID}" = "oui" ] && L_OPTION_SID="[${SH_SESSION_IDP}] " [ "${SH_AFF_SID}" = "oui" ] && L_OPTION_SID="[${SH_SESSION_IDP}] "
L_OPTION_NOLOG=${L_OPTION_NOLOG:="non"} L_OPTION_NOLOG=${L_OPTION_NOLOG:=0}
# - Ecriture des messages # - Ecriture des messages
# - Ajout d une indentation si elle est definie # - Ajout d une indentation si elle est definie
[ -n "${SH_INDENT_MSG}" ] && L_TEXT="${SH_INDENT_MSG} ${L_TEXT}" [ -n "${SH_INDENT_MSG}" ] && L_TEXT="${SH_INDENT_MSG} ${L_TEXT}"
if [ "${L_OPTION_DBG}" = "oui" ] if (( ${L_OPTION_DBG} ))
then then
[ ${L_EXISTE_REP} -eq 0 ] && echo "${L_TIME_STAMP} [${SH_SESSION_IDP}] : <Debug_${L_NIV_DEBUG}> ${L_TEXT}" >> ${SH_FICLOG} (( ${L_EXISTE_REP} & ! ${L_INTER} )) && echo "${L_TIME_STAMP} [${SH_SESSION_IDP}] : <Debug_${L_NIV_DEBUG}> ${L_TEXT}" >> ${SH_FICLOG}
(( ${L_INTER} )) && echo "<Debug_${L_NIV_DEBUG}> ${L_TEXT}"
else else
[ ${L_EXISTE_REP} -eq 0 -a "${L_OPTION_CPT}" = "oui" -a "${L_OPTION_HIST}" = "non" ] && echo "${L_TIME_STAMP} : ${L_TEXT}" >> ${SH_FICCPT} (( ${L_EXISTE_REP} & ${L_OPTION_CPT} & ! ${L_OPTION_HIST} )) && echo "${L_TIME_STAMP} : ${L_TEXT}" >> ${SH_FICCPT}
[ ${L_EXISTE_REP} -eq 0 -a "${L_OPTION_CPT}" = "non" -a "${L_OPTION_HIST}" = "oui" ] && echo "${L_TIME_STAMP} : ${SH_LOGUSER} : ${SH_EXECUSER} : ${L_TEXT}" >> ${SH_FICTRC} (( ${L_EXISTE_REP} & ! ${L_OPTION_CPT} & ${L_OPTION_HIST} )) && echo "${L_TIME_STAMP} : ${SH_LOGUSER} : ${SH_EXECUSER} : ${L_TEXT}" >> ${SH_FICTRC}
if [ "${L_OPTION_NOLOG}" = "non" ] if (( ! ${L_OPTION_NOLOG} ))
then then
[ ${L_EXISTE_REP} -eq 0 -a "${L_OPTION_CPT}" = "non" -a "${L_OPTION_HIST}" = "non" ] && echo "${L_TIME_STAMP} [${SH_SESSION_IDP}] : ${L_TEXT}" >> ${SH_FICLOG} (( ! ${L_INTER} & ${L_EXISTE_REP} & ! ${L_OPTION_CPT} & ! ${L_OPTION_HIST} )) && echo "${L_TIME_STAMP} [${SH_SESSION_IDP}] : ${L_TEXT}" >> ${SH_FICLOG}
[ ${L_EXISTE_REP} -eq 0 -a "${L_OPTION_CPT}" = "oui" -a "${L_OPTION_HIST}" = "oui" ] && echo "${L_TIME_STAMP} : ${L_TEXT}" >> ${SH_FICLOG} (( ! ${L_INTER} & ${L_EXISTE_REP} & ${L_OPTION_CPT} & ${L_OPTION_HIST} )) && echo "${L_TIME_STAMP} : <lib:fct_message> : Option -cpt et -hist ! - ${L_TEXT}" >> ${SH_FICLOG}
fi fi
if [ "${SH_SILENCE}" = "non" -a "${L_OPTION_HIST}" = "non" ] if [ \( "${SH_SILENCE}" = "non" -a "${L_OPTION_HIST}" = 0 \) -o ${L_INTER} -eq 1 ]
then then
if [ "${L_OPTION_COULEUR}" = "oui" ] (( ${L_OPTION_COULEUR} )) && echo -e "${L_OPTION_SID}\033[${L_COULEUR}m${L_TEXT}\033[0m" || echo -e "${L_OPTION_SID}${L_TEXT}"
then
echo -e "${L_OPTION_SID}\033[${L_COULEUR}m${L_TEXT}\033[0m"
else
echo -e "${L_OPTION_SID}${L_TEXT}"
fi
fi fi
fi fi
return 0 return 0

View File

@ -2,8 +2,8 @@
## Script : params.lib ## Script : params.lib
## Module Puppet : gnc-script_core_dtsi ## Module Puppet : gnc-script_core_dtsi
## Auteur : Emmanuel Confrere ## Auteur : Emmanuel Confrere
## Date : 05-07-2017 ## Date : 26-11-2017
## Version : 2.2.2 ## Version : 3.0.1
## Objet : Gere les options passees a un script ## Objet : Gere les options passees a un script
## qui ont ete declare dans l entete de ce dernier ## qui ont ete declare dans l entete de ce dernier
## ##
@ -43,7 +43,12 @@
# 2.2.1 13-04-2017 - Emmanuel Confrere - Ano : Prise en compte de la journalisation avec l option -log # 2.2.1 13-04-2017 - Emmanuel Confrere - Ano : Prise en compte de la journalisation avec l option -log
# Compatibilite ascendente n etait pas assuree. # Compatibilite ascendente n etait pas assuree.
# 2.2.2 05-07-2017 - Emmanuel Confrere - Ano : Lorsque des option possede une inclusion la librairie entre dans une boucle infinie ! # 2.2.2 05-07-2017 - Emmanuel Confrere - Ano : Lorsque des option possede une inclusion la librairie entre dans une boucle infinie !
# 2.2.3 21-11-2017 - Doug Le Tough - Ano : La construction de L_PARMF ne permettait pas de differencier les differentes execution d'un meme script # 3.0.0 26-07-2018 - Emmanuel Confrere - Evo : Changement conceptuel sur la gestion des valeurs par defaut
# Correction de l analyse des arguments declare par "@ARG:", seul la derniere declaration
# est prise en compte.
# Les variables SH_ARGS et SH_ARG_<option> ou leur representant defini dans la declaration
# des option et argument (@ARG: et @OPT:) peuvent etre surcharge dans le fichier de configuration.
# 3.0.1 26-11-2017 - Doug Le Tough - Ano : La construction de L_PARMF ne permet pas de differencier les differentes execution d'un meme script
##---------------------------------------------------------------------------- ##----------------------------------------------------------------------------
function fct_params function fct_params
@ -96,19 +101,26 @@ L_PARMF="${SH_PROG%*.sh}_${SH_SESSION_ID}.parms"
> ${L_PARMF} > ${L_PARMF}
# -- Extraction de la declaration des arguments du script et affectation de la valeur par defaut # -- Extraction de la declaration des arguments du script et affectation de la valeur par defaut
# -- Il s agit de recuperer les lignes de l entete du script qui commence par "# ARG:" # -- Il s agit de recuperer la dernier ligne de l entete du script qui commence par "# ARG:"
L_PARAM_ARGS=`grep -E "^# *@ARG:" ${L_PROG}|head -1|sed "s/# *@ARG: *\([^ #]*\).*$/\1/"` L_PARAM_ARGS=`grep -E "^# *@ARG:" ${L_PROG}|head -1|sed "s/# *@ARG: *\([^ #]*\).*$/\1/"|tail -1`
if [ -n "${L_PARAM_ARGS}" ] if [ -n "${L_PARAM_ARGS}" ]
then then
# -- Un arguments a ete declare on initialise la valeur par defaut # -- Un arguments a ete declare on initialise la valeur par defaut
L_DEFARG=`echo ${L_PARAM_ARGS}|cut -d: -f4` L_DEFARG=`echo ${L_PARAM_ARGS}|cut -d: -f4` # Valeur par defaut de l arguments
L_VAR=`echo ${L_PARAM_ARGS}|cut -d: -f2` L_VAR=`echo ${L_PARAM_ARGS}|cut -d: -f2` # Nom de la variable acceuillant la valeur de l argument
L_VAR=${L_VAR:="SH_ARGS"} # Nom par defaut de la variable acceuillant la valeur de l argument
# -- detection d une valeur par defaut pour l argument du script # -- detection d une valeur par defaut pour l argument du script
# -- La variable L_PARAM_ARGS_DEF sera utilise pour ecraser le parametre par defaut si ce dernier a ete soumis au script # -- La variable L_PARAM_ARGS_DEF sera utilise pour ecraser le parametre par defaut si ce dernier a ete soumis au script
[ -n "${L_DEFARG}" ] && L_PARAM_ARGS_DEF=1 || L_PARAM_ARGS_DEF=0 if [ -n "${L_DEFARG}" ] && L_PARAM_ARGS_DEF=1 || L_PARAM_ARGS_DEF=0
# -- initialisation de la valeur par defaut then
[ -n "${L_VAR}" -a -n "${L_DEFARG}" ] && eval ${L_VAR}=\"${L_DEFARG}\" L_PARAM_ARGS_DEF=1
[ -z "${L_VAR}" -a -n "${L_DEFARG}" ] && eval SH_ARGS=\"${L_DEFARG}\" # -- initialisation de la valeur par defaut, si cela n a pas ete effectuer dans le fichier de conf du script
eval ${L_VAR}=\$\{${L_VAR}:=\"${L_DEFARG}\"\}
else
L_PARAM_ARGS_DEF=0
fi
# -- On recupere la liste des valeurs possibles pour les arguments du script # -- On recupere la liste des valeurs possibles pour les arguments du script
L_PARAM_ARGS_CTL=`echo ${L_PARAM_ARGS}|cut -d: -f5` L_PARAM_ARGS_CTL=`echo ${L_PARAM_ARGS}|cut -d: -f5`
fi fi
@ -152,7 +164,7 @@ do
L_TMP=`echo ${L_PARAM}|sed 's/[^:]//g'` L_TMP=`echo ${L_PARAM}|sed 's/[^:]//g'`
if [ ${#L_TMP} -lt 6 -o ${#L_TMP} -gt 7 ] if [ ${#L_TMP} -lt 6 -o ${#L_TMP} -gt 7 ]
then then
L_ERREUR_MSG[1]="<lib:fct_params> La declaration de l option \"${L_OPT_NOM[${L_IDX}]}\" ne comporte pas le nopmbre de champs requis (7 ou 8)" L_ERREUR_MSG[1]="<lib:fct_params> La declaration de l option \"${L_OPT_NOM[${L_IDX}]}\" ne comporte pas le nombre de champs requis (7 ou 8)"
L_ERREUR=1 L_ERREUR=1
else else
[ `echo ${L_PARAM}|cut -d: -f1|grep -c "o"` -eq 1 ] && L_OPT_OBLIGATOIRE="${L_OPT_OBLIGATOIRE}${L_OPT_NOM[${L_IDX}]}:${L_IDX} " [ `echo ${L_PARAM}|cut -d: -f1|grep -c "o"` -eq 1 ] && L_OPT_OBLIGATOIRE="${L_OPT_OBLIGATOIRE}${L_OPT_NOM[${L_IDX}]}:${L_IDX} "
@ -166,16 +178,13 @@ do
eval ${L_TMP}=${L_IDX} eval ${L_TMP}=${L_IDX}
fi fi
# -- Valeur par defaut pour les parametres non booleen # -- Affectation de la valeur par defaut pour les parametres non booleen, ayant defini une valeur par defaut
L_VAR=`echo ${L_PARAM}|cut -d: -f3` L_DEFARG=`echo ${L_PARAM}|cut -d: -f5` # valeur par defaut
L_DEFARG=`echo ${L_PARAM}|cut -d: -f5`
if [ `echo ${L_PARAM}|cut -d: -f1|grep -c "b"` -eq 0 -a -n "${L_DEFARG}" ] if [ `echo ${L_PARAM}|cut -d: -f1|grep -c "b"` -eq 0 -a -n "${L_DEFARG}" ]
then then
if [ -z "${L_VAR}" ] L_VAR=`echo ${L_PARAM}|cut -d: -f3` # Nom de la variable acceuillant la valeur de l argument
then eval SH_ARG_${L_OPT_NOM[${L_IDX}]}=\"${L_DEFARG}\" L_VAR=${L_VAR:="SH_ARG_${L_OPT_NOM[${L_IDX}]}"} # Nom par defaut de la variable acceuillant la valeur de l argument
else eval ${L_VAR}=\"${L_DEFARG}\" eval ${L_VAR}=\$\{${L_VAR}:=\"${L_DEFARG}\"\} # Valorisation, si cela n a pas ete effectuer dans le fichier de conf du script
fi
fi fi
fi fi
((L_IDX++)) ((L_IDX++))
@ -361,7 +370,7 @@ then
(( ${L_NB_ARG} )) && eval ${L_VAR}[${L_NB_ARG}]=${L_VAL} || eval ${L_VAR}=${L_VAL} (( ${L_NB_ARG} )) && eval ${L_VAR}[${L_NB_ARG}]=${L_VAL} || eval ${L_VAR}=${L_VAL}
else else
# -- Pas de declaration !! # -- Pas de declaration !!
(( ! ${#L_ERREUR_MSG[11]} )) && L_ERREUR_MSG[11]="L argument suivant ete dectecte sans declaration : " (( ! ${#L_ERREUR_MSG[11]} )) && L_ERREUR_MSG[11]="L argument suivant a ete dectecte sans declaration : "
L_ERREUR_MSG[11]="${L_ERREUR_MSG[11]}\"${1}\" " L_ERREUR_MSG[11]="${L_ERREUR_MSG[11]}\"${1}\" "
L_ERREUR=11 L_ERREUR=11
fi fi
@ -476,7 +485,7 @@ fi
# -- --------------------------- # -- ---------------------------
if [ -n "${L_OPTINCONNU}" ] if [ -n "${L_OPTINCONNU}" ]
then then
L_ERREUR_MSG[10]="Option inconnue detectee(s) : ${L_OPTINCONNU}" L_ERREUR_MSG[10]="Option inconnue(s) detectee(s) : ${L_OPTINCONNU}"
L_ERREUR=10 L_ERREUR=10
fi fi
@ -495,7 +504,7 @@ done
L_VAL="${SH_OPTION_h}${SH_OPTION_log}${SH_OPTION_hist}${SH_OPTION_s}${SH_OPTION_cpt}" L_VAL="${SH_OPTION_h}${SH_OPTION_log}${SH_OPTION_hist}${SH_OPTION_s}${SH_OPTION_cpt}"
if [ ${L_VAL} -ne 0 ] if [ ${L_VAL} -ne 0 ]
then then
if (( 2#${L_VAL} & 2#00010 )) # -- Comparaison binaire bit a bit vrix si l option -s est positionnee if (( 2#${L_VAL} & 2#00010 )) # -- Comparaison binaire bit a bit vrai si l option -s est positionnee
then then
# -- Option s # -- Option s
SH_SILENCE="oui" SH_SILENCE="oui"