##---------------------------------------------------------------------------- ## 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 " 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 " 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