You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
6.3 KiB
121 lines
6.3 KiB
##---------------------------------------------------------------------------- |
|
## 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 ;; |
|
"*" ) echo "eval ${L_Cmd}" ;; |
|
esac |
|
} |
|
typeset -Ffx fct_erreur
|
|
|