153 lines
6.7 KiB
Plaintext
Executable File
153 lines
6.7 KiB
Plaintext
Executable File
##----------------------------------------------------------------------------
|
|
## Script : message.lib
|
|
## Module Puppet : gnc-script_core_dtsi
|
|
## Auteur : Emmanuel Confrere
|
|
## Date : 29-06-2017
|
|
## Version : 1.2.1
|
|
## Objet : Gestion des message sur la console et dans les divers fichiers de trace
|
|
##
|
|
## Fonction : fct_message
|
|
##
|
|
## Detail : Cette fonction remplace l utilisation de "echo".
|
|
## Elle permet de gerer les messages a destination des fichiers de traces
|
|
## , des fichiers de compte rendu ou de la console.
|
|
##
|
|
## Sans parametre le message est ecrit sur la console et dans le fichier
|
|
## journal du script ${SH_FICLOG}. Le comportement est modifie selon les options
|
|
## utilisees.
|
|
##
|
|
## -cpt : Le message est aussi ecrit dans le fichier de compte-rendu ${SH_FICCPT}
|
|
## -hist : Le message est aussi ecrit dans le fichier d historique ${SH_FICTRC}
|
|
## Cette option ajoute des information d execution dans le fichier d historique
|
|
## notamant le compte qui execute le script sous la forme user/sudo_user
|
|
## -debug N : Le message est ecrit uniquement dans le fichier journal ${SH_FICLOG}
|
|
## si N est inferrieure ou egal au niveau de debug du Shell. Par defaut
|
|
## le niveau debug du shell est 0.
|
|
## -nolog : inhibe l ecritutre dans le fichier journal
|
|
## -color : Ecrit le message en couleur sur la console.
|
|
## Les couleurs disponible sont noir,, rouge, vert, jaune, bleu, rose, cyan,
|
|
## gris, orange et blanc
|
|
##
|
|
## Les variables SH_FIC* sont definies dans le fichiers ${NC_EXPL_CONF}/init.conf
|
|
##
|
|
# ----------------------------------------------------------------------------
|
|
# Mise a jour :
|
|
# 1.0.0 10-02-2016 - Emmanuel Confrere - Cre : Reprise du script du socle Oracle
|
|
# 1.1.0 10-03-2017 - Emmanuel Confrere - Evo : Optimisation du traitement de l option -debug
|
|
# 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
|
|
# la fonction logname ne renvoi rien ?
|
|
##----------------------------------------------------------------------------
|
|
|
|
function fct_message
|
|
{
|
|
local L_TEXT="" # Texte a afficher
|
|
local L_TIME_STAMP=`date "+%x %X"` # Horrodatage a ajouter au texte
|
|
local L_EXISTE_REP
|
|
local L_NB_PARAM=0 # Nb de parametre de la ligne de commande
|
|
local L_TMP
|
|
local L_TMP2
|
|
local L_OPT # Nom des option
|
|
local L_OPTION_DBG="non" # Message de debug
|
|
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_OPTION_CPT="non" # Message de compte rendu
|
|
local L_OPTION_HIST="non" # Message pour l historique
|
|
local L_COULEUR="" # Couleur du texte avec l option -color
|
|
local L_OPTION_COULEUR="non"
|
|
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 "
|
|
|
|
# - recuperation des parametres en entree
|
|
L_TMP=1
|
|
L_NB_PARAM=$#
|
|
while [ ${L_TMP} -le ${L_NB_PARAM} ]
|
|
do
|
|
L_OPT="$1"
|
|
case "${L_OPT}" in
|
|
"-cpt") L_OPTION_CPT="oui" ;;
|
|
"-nolog") L_OPTION_NOLOG="oui" ;;
|
|
"-hist") L_OPTION_HIST="oui" ;;
|
|
"-color") L_OPTION_COULEUR="oui"
|
|
L_ARG=`echo $2|tr A-Z a-z`
|
|
L_TMP2=${L_ARG:0:1}
|
|
if [ "${L_TMP2}" != "-" ]
|
|
then
|
|
# on recherche la correspondance numerique de la couleur
|
|
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
|
|
[ ${#L_COULEUR} -ne 4 ] && L_OPTION_COULEUR="non"
|
|
L_TMP=$(( ${L_TMP} + 1 ))
|
|
shift
|
|
fi ;;
|
|
|
|
"-debug") L_OPTION_DBG="oui"
|
|
L_ARG="$2"
|
|
L_TMP2=${L_ARG:0:1}
|
|
if [ "${L_TMP2}" != "-" ]
|
|
then
|
|
L_ARG=`echo $2|sed 's/[0-9]//g'`
|
|
if [ -n "${L_ARG}" ]
|
|
then
|
|
L_TEXT="$2"
|
|
L_NIV_DEBUG=1
|
|
else
|
|
L_NIV_DEBUG=$2
|
|
fi
|
|
L_TMP=$(( ${L_TMP} + 1 ))
|
|
shift
|
|
else
|
|
L_NIV_DEBUG=1
|
|
fi
|
|
[ ${L_NIV_DEBUG} -gt ${SH_NIV_DEBUG} ] && return 0 ;;
|
|
*) L_TEXT="${L_OPT}" ;;
|
|
esac
|
|
L_TMP=$(( ${L_TMP} + 1 ))
|
|
shift
|
|
done
|
|
|
|
# - controle que la fonction est lance depuis un shell
|
|
if [ -z "${SH_SESSION_ID}" ]
|
|
then
|
|
# -- La fonction est executer en mode inetractif (Pas dans un shell)
|
|
# -- on autorise alors que l affichage sur la sortie standard
|
|
SH_AFF_SID="non"
|
|
SH_SILENCE="non"
|
|
SH_NIV_DEBUG=0
|
|
L_EXISTE_REP=1
|
|
else
|
|
# - Mode shell...
|
|
# - 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
|
|
fi
|
|
|
|
# - initialisation des variables
|
|
[ "${SH_AFF_SID}" = "oui" ] && L_OPTION_SID="[${SH_SESSION_IDP}] "
|
|
L_OPTION_NOLOG=${L_OPTION_NOLOG:="non"}
|
|
|
|
# - Ecriture des messages
|
|
# - Ajout d une indentation si elle est definie
|
|
[ -n "${SH_INDENT_MSG}" ] && L_TEXT="${SH_INDENT_MSG} ${L_TEXT}"
|
|
if [ "${L_OPTION_DBG}" = "oui" ]
|
|
then
|
|
[ ${L_EXISTE_REP} -eq 0 ] && echo "${L_TIME_STAMP} [${SH_SESSION_IDP}] : <Debug_${L_NIV_DEBUG}> ${L_TEXT}" >> ${SH_FICLOG}
|
|
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} -eq 0 -a "${L_OPTION_CPT}" = "non" -a "${L_OPTION_HIST}" = "oui" ] && echo "${L_TIME_STAMP} : ${SH_LOGUSER} : ${SH_EXECUSER} : ${L_TEXT}" >> ${SH_FICTRC}
|
|
if [ "${L_OPTION_NOLOG}" = "non" ]
|
|
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_EXISTE_REP} -eq 0 -a "${L_OPTION_CPT}" = "oui" -a "${L_OPTION_HIST}" = "oui" ] && echo "${L_TIME_STAMP} : ${L_TEXT}" >> ${SH_FICLOG}
|
|
fi
|
|
if [ "${SH_SILENCE}" = "non" -a "${L_OPTION_HIST}" = "non" ]
|
|
then
|
|
if [ "${L_OPTION_COULEUR}" = "oui" ]
|
|
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
|
|
return 0
|
|
}
|
|
typeset -Ffx fct_message |