L'ensemble des scripts et bibliothèques bash utilisés pour maintenir l'infrastructure du Tetalab. Ce socle Bash est une version légère et adaptée du socle Bash essentiellement développé par Emmanuel Confrère, éminent DBA Calédonien.
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.
 

163 lines
9.0 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
# 2.2.0 19-02-2018 - Doug Le Tough - Evo : Definition de ${SH_TMP_DIR} constitue de ${NC_EXPL_TMP}/${SH_SESSION_ID}
## -----------------------------------------------------------------------------
## 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"}
# - Definition du repertoire temporaire ${SH_TMPDIR}
SH_TMP_DIR="${NC_EXPL_TMP}/${SH_SESSION_ID}"
# 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 SH_TMP_DIR
# - 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 ${*}