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.
159 lines
8.8 KiB
159 lines
8.8 KiB
##------------------------------------------------------------------------------ |
|
## Script : init.conf |
|
## Module Puppet : gnc-script_core_dtsi |
|
## Auteur : Emmanuel Confrere |
|
## Date : 29-06-2017 |
|
## Version : 2.1.2 |
|
## Objet : Fichier de configuration commun a tout les scripts |
|
## |
|
## Detail : Ce fichier contient les varaibles de fonctionement commune au script du socle |
|
## Il est charge systematiquement au debut de chaque script |
|
## Toute les variables initialisees ici sont nomme SH_* |
|
## |
|
## ----------------------------------------------------------------------------- |
|
# Mise a jour : |
|
# 1.0.0 23-04-2014 - Emmanuel Confrere - Cre : Creation a partir de commun.conf |
|
# qu'il doit remplacer a terme |
|
# 1.1.0 13-05-2014 - Emmanuel Confrere - Evo : Factorisation du code |
|
# Amelioration de la lisibilite et ajout de commentaire |
|
# Passage de certaine variable en heritage |
|
# 1.2.0 13-05-2014 - Emmanuel Confrere - Evo : Ajout de message de debug |
|
# 1.3.0 16-04-2015 - Daniel Frochtmann - Evo : Ajout semaphore pour controler les executions |
|
# multiples (SH_CPT_SEMAPHORE) |
|
# 1.4.0 22-09-2015 - Emmanuel Confrere - Evo : Possibilite de defferencier les retentions entre les fichier cpt et log |
|
# 2.0.0 10-02-2016 - Emmanuel Confrere - Evo : Integration au socle DTSI via Puppet |
|
# 2.0.1 16-03-2016 - Emmanuel Confrere - Ano : Perte de la variable SH_RETENTION (Cf. DBA-2088) |
|
# 2.1.0 24-03-2017 - Emmanuel Confrere - Evo : Changement du nom du serveur de batch |
|
# 2.1.1 27-06-2017 - Emmanuel Confrere - Ano : Fonctionnement inattendu sous Bash 3.2.25 |
|
# la fonction logname ne renvoi rien ? |
|
# 2.1.2 29-06-2017 - Emmanuel Confrere - Ano : Erreur : logname() renvoi null si connexion via sshd |
|
# Remplacement de logname() par /etc/proc/self/loginuid |
|
## ----------------------------------------------------------------------------- |
|
## Ce fichier contient les varaibles de fonctionement commune au script du socle |
|
## Il est charge systematiquement au debut de chaque script |
|
## Toute les variables initialisees ici sont nomme SH_* |
|
## ----------------------------------------------------------------------------- |
|
# - Init variables |
|
# - -------------- |
|
# - Elements d infrastructure et systeme |
|
[ "`hostname`" = "sousetsuken" ] && SH_SRVDEP="oui" || SH_SRVDEP="non" |
|
SH_OS_TYPE=`uname -s` |
|
SH_IDLOGUSER=`cat /proc/self/loginuid` |
|
SH_LOGUSER=`grep -E "[^:]*:[^:]:${SH_IDLOGUSER}" /etc/passwd|cut -d":" -f1` |
|
SH_EXECUSER=${LOGNAME} |
|
SH_PATH=${PATH} |
|
|
|
# - Identification de la session de travail |
|
# - --------------------------------------- |
|
# La variable SH_SESSION_ID permet d identifier une session de travail. |
|
# Il s agit d un identifiant unique permentant de reunir dans une unite commune |
|
# les objets trace, journaux , historique ... Cette variable est partage par tout |
|
# les shell appele en aval d un shell pere. La variable SH_SESSION_ID est initialise |
|
# qu au premier chargement de init.conf |
|
# L initialisation de certainne variable sont dependante de cette premiere initialisation |
|
# pour permetre l heritage des parametres au sous-shell appele. |
|
SH_TIME_STAMP=`date "+%x %X"` # Horrodatage pour l historique |
|
SH_TIMES=`date +"%s"` # Horrodatage pour identification |
|
SH_OSPID=$$ # Numero de processus |
|
SH_SESSION_IDP="${SH_TIMES}_${SH_OSPID}" |
|
# La variable SH_SESSION_ID est initialise que la premiere fois |
|
[ -z "${SH_SESSION_ID}" ] && SH_SESSION_ID="${SH_SESSION_IDP}" |
|
# La variable SH_FIRSTTIME permet de savoir si l execution courante de init.conf |
|
# est issu d un appel depuis un script ou d un lancement manuel depuis le shell. |
|
[ "${SH_SESSION_IDP}" = "${SH_SESSION_ID}" ] && SH_FIRSTTIME="oui" || SH_FIRSTTIME="non" |
|
|
|
|
|
# - Localistaion du script, pour afficher l'aide si |
|
# necessaire.Localisation defini par $SH_DIR/$SH_PROG |
|
SH_PROG=`which $0 2>&1` |
|
SH_DIR=`dirname ${SH_PROG}` |
|
[ "${SH_DIR}" = "." ] && SH_DIR=`pwd` |
|
SH_PROG=`basename ${SH_PROG}` |
|
SH_PROG_VERSION=`grep "^## Version *:" ${SH_DIR}/${SH_PROG}|cut -d: -f2|sed 's/ *//g'` |
|
SH_PARAM="$*" |
|
|
|
# - Initialisationdes fichiers de trace, compte-rendu, message, |
|
# historique, configuration specifique, fichier de semaphore |
|
SH_FICTRC="${NC_EXPL_HST}/`echo ${SH_PROG}|cut -d"." -f1`.hist" |
|
SH_FICMSG="${NC_EXPL_MSG}/`echo ${SH_PROG}|cut -d"." -f1`.msg" |
|
SH_FICCFG="${NC_EXPL_CFG}/`echo ${SH_PROG}|cut -d"." -f1`.conf" |
|
SH_FICSEM="/dev/shm/`echo ${SH_PROG}|cut -d"." -f1`.sem" |
|
[ "${SH_FIRSTTIME}" = "oui" ] && SH_FICLOG="${NC_EXPL_LOG}/`echo ${SH_PROG}|cut -d"." -f1`_${SH_SESSION_IDP}.log" |
|
[ "${SH_FIRSTTIME}" = "oui" ] && SH_FICCPT="${NC_EXPL_CPT}/`echo ${SH_PROG}|cut -d"." -f1`_${SH_SESSION_IDP}.cpt" |
|
|
|
# - initialisation des variables commune aux scripts |
|
# Ces variable peuvent etre surcharge ou modifier dans le fichier de configuration specifique du script |
|
# SH_FICCFG mais dans ce cas il n y auras plus d heritage. |
|
[ "${SH_FIRSTTIME}" = "oui" ] && SH_RETENTION_CPT=8 # Retention des fichiers cpt en jours par defaut |
|
[ "${SH_FIRSTTIME}" = "oui" ] && SH_RETENTION_LOG=8 # Retention des fichiers trc en jours par defaut |
|
[ "${SH_FIRSTTIME}" = "oui" ] && SH_SILENCE="non" # Mode d affichage silencieu (Valeur par default) |
|
[ "${SH_FIRSTTIME}" = "oui" ] && SH_NIV_DEBUG=0 # Debug inactif par defaut |
|
[ "${SH_FIRSTTIME}" = "oui" ] && SH_AFF_SID="non" # Affichage du numero de session dans fct_message et fct_erreur |
|
# Les variable prefixe avec F sont utilise pour proteger l initialisation des variables principales (sans le F) |
|
# Lorsque qu un script initialise une des ce variables dans le fichier de configuration specifique au script |
|
# alors il faut ignorer les initialisation specifique qui pourrais etre effectuer par les scripts appeles par ce dernier. |
|
SH_RETENTION_FLOG=${SH_RETENTION_LOG} |
|
SH_RETENTION_FCPT=${SH_RETENTION_CPT} |
|
SH_FSILENCE=${SH_SILENCE} |
|
|
|
# - Parallelisation d execution des scripts. |
|
# - Par defaut seul une occurance active d un meme script |
|
# - Le controle d execution concurrente est realiase par la lib semaphore.lib |
|
SH_CPT_SEMAPHORE=1 # Valeur d execution du semaphore par defaut |
|
|
|
# - Indentation des messages affiche par fct_message |
|
# pour ameliore la lisibilite des traces |
|
# La valeur de la variable SH_INDENT_MSG est diminuer par fct_erreur(stop) |
|
[ "${SH_FIRSTTIME}" = "non" ] && SH_INDENT_MSG="${SH_INDENT_MSG} " || SH_INDENT_MSG="" |
|
|
|
# - Connection a la base de referencement |
|
[ -z "${SH_CNX_REF}" ] && SH_CNX_REF=${SH_CNX_REF:="cmdb/IRji_5#1O@refpro"} |
|
|
|
# Globalisation des variables |
|
export SH_FICLOG SH_FICCPT SH_CNX_REF SH_INDENT_MSG SH_SESSION_ID SH_NIV_DEBUG SH_SILENCE |
|
export SH_RETENTION_CPT SH_RETENTION_LOG SH_LOGUSER SH_EXECUSER |
|
|
|
# - Chargement de l'environement specifique au script |
|
if [ -f ${SH_FICCFG} ] |
|
then |
|
fct_message -debug 0 "Chargement de fichier de configuration : ${SH_FICCFG}" |
|
. ${SH_FICCFG} |
|
fi |
|
|
|
# - Remise en etat des variables protegees |
|
if [ "${SH_FIRSTTIME}" = "oui" ] |
|
then |
|
# - Les variables peuvent etre changees dans le fichier specifique lors de la premiere inittialisation |
|
# - Cependant pour conserve la compatibilte acsendante la variable SH_RETENTION doit etre controlee |
|
# - Si cette derniere est non vide alors c est qu elle a ete utilise dans le fichier de configuration specifique |
|
# - on doit alors initialiser les nouvelles variables avec cette valeur ... |
|
# - Note : SH_RETENTION est obsolete et ne doit plus etre utilise dans les scripts |
|
# Cette variable a ete remplace par SH_RETENTION_CPT et SH_RETENTION_LOG |
|
if [ -n "${SH_RETENTION}" ] |
|
then |
|
SH_RETENTION_LOG=${SH_RETENTION} |
|
SH_RETENTION_CPT=${SH_RETENTION} |
|
else |
|
SH_RETENTION=8 # Valeur par defaut, conserve pour compatibilite ascendante |
|
fi |
|
export SH_RETENTION |
|
else |
|
SH_RETENTION_LOG=${SH_RETENTION_FLOG} |
|
SH_RETENTION_CPT=${SH_RETENTION_FCPT} |
|
SH_SILENCE=${SH_FSILENCE} |
|
fi |
|
|
|
# - Rotation des fichiers de compte-rendu et de trace |
|
[ "${SH_FIRSTTIME}" = "oui" ] && fct_rotation ${SH_FICCPT} ${SH_RETENTION_CPT} |
|
[ "${SH_FIRSTTIME}" = "oui" ] && fct_rotation ${SH_FICLOG} ${SH_RETENTION_LOG} |
|
|
|
# - Marque le debut de l execution du programme |
|
fct_message -hist "(${SH_SESSION_ID}) : Debut du script" |
|
fct_message -hist "(${SH_SESSION_ID}) : Parametre : ${SH_PARAM}" |
|
[ "${SH_FIRSTTIME}" = "oui" -a ${SH_NIV_DEBUG} -gt 0 ] && fct_message -color rouge "ATTENTION - Mode debug activer : Niveau de trace ${SH_NIV_DEBUG}" |
|
|
|
# - Liberation des variables locale |
|
unset SH_TIMES SH_OSPID SH_TIME_STAMP SH_FIRSTTIME SH_RETENTION_FLOG SH_RETENTION_FCPT SH_FSILENCE SH_IDLOGUSER |
|
|
|
# - Gestion des options et argument |
|
fct_params ${*}
|
|
|