122 lines
6.3 KiB
Plaintext
Executable File
122 lines
6.3 KiB
Plaintext
Executable File
##----------------------------------------------------------------------------
|
|
## Script : erreur.lib
|
|
## Module Puppet : gnc-script_core_dtsi
|
|
## Auteur : Emmanuel Confrere
|
|
## Date : 06-04-2017
|
|
## Version : 1.2.2
|
|
## Objet : Affiche le message d erreur associe au code et execute
|
|
## eventuellement une fonction rattachee.
|
|
##
|
|
## Fonction : fct_erreur Nombre
|
|
##
|
|
## Detail : Le message, et eventuellement la fonction sont recherche dans
|
|
## le fichier "${NC_EXPL_MSG}/nom_du_script.msg". Chaque ligne de ce fichier
|
|
## correspond a la definition d une erreur : Numero_err,Type,Fonction,Message
|
|
## Les parametre sont separe par le caractere "|".
|
|
## Type peut prendre les valeurs "info" ou "erreur"
|
|
## La fonction peut etre "stop","continu" ou defini dans le shell appelant.
|
|
## Numero_err est le code de retour du script (les numero de 250 a 256 sont reseves).
|
|
##
|
|
## Si numero_err vaut zero CodeRet=0 Fonction="stop"
|
|
## Si numero_err non renseigne CodeRet=250 Fonction="stop"
|
|
## Si numero_err n est pas trouver dans le fichier ".msg" CodeRet=251 Fonction="stop"
|
|
## Si le fichier ".msg" n existe pas CodeRet=252 Fonction="stop"
|
|
## Si la ligne de definition n est pas correcte CodeRet=253 Fonction="stop"
|
|
## Une erreur ete remontee par la fonction fct_params CodeRet=254 Fonction="stop"
|
|
## Si numero_err > 250 CodeRet=255
|
|
##
|
|
# ----------------------------------------------------------------------------
|
|
# Mise a jour :
|
|
# 1.0.0 10-02-2016 - Emmanuel Confrere - Evo : Integration au socle DTSI
|
|
# 1.0.1 17-03-2016 - Emmanuel Confrere - Ano : Les fichier temporaire ne sont pas supprimer dans les sous arborescence
|
|
# 1.1.0 24-08-2016 - Emmanuel Confrere - Evo : Prise en charge de la librairie fct_params
|
|
# 1.2.0 05-10-2016 - Emmanuel Confrere - Evo : Interpretation des variables dans la zone de texte de fichier de configuration .msg
|
|
# 1.2.1 10-03-2017 - Emmanuel Confrere - Ano : Suppression des variables NC_EXPL_*
|
|
# 1.2.2 06-04-2017 - Emmanuel Confrere - Ano : Degradation de performance serveur (Cf. DBA-2458)
|
|
# Suppression de la commande "find"
|
|
##----------------------------------------------------------------------------
|
|
|
|
function fct_erreur
|
|
{
|
|
# - Declaration des variables
|
|
local L_NumErr=$1 # Numero d erreur a rechercher
|
|
local L_CodRet=0 # Code de sortie
|
|
local L_Cmd="stop" # Fonction execute par defaut, apres recheche
|
|
local L_RefErr="" # Extraction de la ligne du fichier .msg
|
|
local L_NbChamp="" # Controle le Nb Champ des ligne .msg
|
|
local L_Msg="" # Message a afficher
|
|
local L_Type="" # Type de message
|
|
|
|
[ -z "${SH_FICMSG}" ] && return 0
|
|
|
|
if [ $# -ne 1 ]
|
|
then
|
|
L_Cmd="stop"; L_CodRet=250; L_NumErr=250; L_Type="ERREUR"; L_Msg="NoErr non renseigne"
|
|
else
|
|
case ${L_NumErr} in
|
|
0 ) L_Cmd="stop"; L_CodRet=0; L_Type="FIN-OK" ;;
|
|
254 ) L_Cmd="stop"; L_CodRet=254; L_Type="ERREUR"; L_Msg="Une erreur ete remontee par la librairie fct_params" ;;
|
|
* ) if [ -f ${SH_FICMSG} ]
|
|
then
|
|
L_RefErr=`grep -e "^${L_NumErr} *|" ${SH_FICMSG}`
|
|
if [ -n "${L_RefErr}" ]
|
|
then
|
|
L_NbChamp=`echo ${L_RefErr}|sed "s/[^|]//g"`
|
|
if [ ${#L_NbChamp} -ne 3 ]
|
|
then
|
|
L_Cmd="stop"; L_CodRet=253; L_Type="ERREUR"; L_Msg="Definition de l erreur incorrecte"
|
|
else
|
|
[ ${L_NumErr} -ge 250 ] && L_CodRet=255 || L_CodRet=${L_NumErr}
|
|
L_Type=`echo ${L_RefErr}|cut -d"|" -f 2|tr a-z A-Z|sed 's/^ *//;s/ *$//'`
|
|
L_Cmd=`echo ${L_RefErr}|cut -d"|" -f 3|sed 's/^ *//;s/ *$//'`
|
|
eval L_Msg=\"${L_RefErr##*|}\"
|
|
[ -z "${L_Cmd}" ] && L_Cmd="stop"
|
|
fi
|
|
else
|
|
L_Cmd="stop"; L_CodRet=251; L_Type="ERREUR"; L_Msg="Definition de l erreur non trouvee"
|
|
fi
|
|
else
|
|
L_Cmd="stop"; L_CodRet=252; L_Type="ERREUR"; L_Msg="Le fichier msg n existe pas"
|
|
fi ;;
|
|
esac
|
|
fi
|
|
|
|
case ${L_Type} in
|
|
"ERREUR" ) fct_message -color rouge "${L_Type} : ${L_Msg}" ;;
|
|
"ALERTE" ) fct_message -color orange "${L_Type} : ${L_Msg}" ;;
|
|
"INFO" ) fct_message -color bleu "${L_Type} : ${L_Msg}" ;;
|
|
"FIN-OK" ) ;;
|
|
* ) fct_message "${L_Type} : ${L_Msg}" ;;
|
|
esac
|
|
|
|
case "${L_Cmd}" in
|
|
"stop" ) fct_message -hist "(${SH_SESSION_ID}) : fin - ${L_NumErr}"
|
|
# Suppression des fichiers temporaire a la sortie du shell principal si mode debug pas activer
|
|
if [ ${#SH_INDENT_MSG} -eq 0 -a ${SH_NIV_DEBUG} -eq 0 ]
|
|
then
|
|
fct_message -debug 0 "<lib:fct_erreur> Nettoyage des fichiers temporaire de la session ${SH_SESSION_ID}"
|
|
if [ -n "${NC_EXPL_TMP}" -a -n "${SH_SESSION_ID}" -a "${NC_EXPL_TMP}" != "/" -a "${NC_EXPL_TMP}" != "." ]
|
|
then
|
|
rm -f "${NC_EXPL_TMP}/*${SH_SESSION_ID}*"
|
|
else
|
|
fct_message -debug 0 "<lib:fct_erreur> Variable de session incoherente : NC_EXPL_TMP = ${NC_EXPL_TMP} & SH_SESSION_ID = ${SH_SESSION_ID}"
|
|
fi
|
|
fi
|
|
case ${L_Type} in
|
|
"ERREUR" ) fct_message -color rouge "fin (${L_NumErr})" ;;
|
|
"ALERTE" ) fct_message -color orange "fin (${L_NumErr})" ;;
|
|
"INFO" ) fct_message -color bleu "fin (${L_NumErr})" ;;
|
|
"FIN-OK" ) fct_message -color vert "fin (${L_NumErr})" ;;
|
|
* ) fct_message "${L_Type} : ${L_Msg}" ;;
|
|
esac
|
|
# Signaler la fin d execution au semaphore eventuel
|
|
fct_libere_exec
|
|
# Reduction de l indentation
|
|
[ ${#SH_INDENT_MSG} -gt 0 ] && SH_INDENT_MSG=${SH_INDENT_MSG:0:$((${#SH_INDENT_MSG}-2))}
|
|
exit ${L_CodRet} ;;
|
|
"continu" ) return 0 ;;
|
|
"*" ) eval ${L_Cmd} ;;
|
|
esac
|
|
}
|
|
typeset -Ffx fct_erreur
|