"Conversion README en markdown"

This commit is contained in:
Doug Le Tough 2017-07-21 13:28:42 +02:00
parent cd79ff47e3
commit 4ef22e61ec

351
README.md
View File

@ -1,6 +1,6 @@
# Aide memoire pour l'écriture de scripts avec le socle bash # Aide memoire pour l'écriture de scripts avec le socle bash
* Sommaire * Sommaire
* I - Arborescence du socle * I - Arborescence du socle
* II - Variables d'environement * II - Variables d'environement
* 1 - Variables globales * 1 - Variables globales
@ -30,14 +30,14 @@
* 9 - fct\_params * 9 - fct\_params
## I - Arborescence du socle ## I - Arborescence du socle
La racine des dossiers utilisée par le Socle Bash est définie par la variable d'environement NC\_EXPL\_ROOT. La racine des dossiers utilisée par le Socle Bash est définie par la variable d'environement NC\_EXPL\_ROOT.
Cette dernière est initialisée à la connexion par l'appel au script /etc/profile.d/tetalab.sh Cette dernière est initialisée à la connexion par l'appel au script /etc/profile.d/tetalab.sh
Cette arborescence est utilisée pour tous scripts Bash ainsi que les variables d'environement qui Cette arborescence est utilisée pour tous scripts Bash ainsi que les variables d'environement qui
en découlent. en découlent.
Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants : Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants :
+-----------------+-----------------------------------------------------------------------------------------------+ +-----------------+-----------------------------------------------------------------------------------------------+
| Dossier | Description | | Dossier | Description |
@ -57,32 +57,32 @@ Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants :
Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire. Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire.
## II - Variables d'environement ## II - Variables d'environement
Le socle utilise deux groupes de variables. Le premier dit "global" le second "de session". Le socle utilise deux groupes de variables. Le premier dit "global" le second "de session".
Sauf si explicite, les variables globales sont définies et exportées à la connexion. Elles sont donc utilisables Sauf si explicite, les variables globales sont définies et exportées à la connexion. Elles sont donc utilisables
par tous les scripts, mais elles ne sont pas modifiables. par tous les scripts, mais elles ne sont pas modifiables.
Les variables de session sont définies à l'execution d'un script et lui sont propres. Les variables de session sont définies à l'execution d'un script et lui sont propres.
Cependent certaines d'entre elles sont transmises aux scripts enfants: Cependent certaines d'entre elles sont transmises aux scripts enfants:
- SH\_SESSION\_ID, SH\_FICLOG, SH\_FICCPT, SH\_RETENTION\_CPT, SH\_RETENTION\_LOG, SH\_NIV\_DEBUG, SH\_SILENCE, SH\_AFF\_SID - SH\_SESSION\_ID, SH\_FICLOG, SH\_FICCPT, SH\_RETENTION\_CPT, SH\_RETENTION\_LOG, SH\_NIV\_DEBUG, SH\_SILENCE, SH\_AFF\_SID
Les variables de session sont modifiable à 2 niveaux. De facon global dans le fichier "init.conf" ou pour un script Les variables de session sont modifiable à 2 niveaux. De facon global dans le fichier "init.conf" ou pour un script
particulier dans le fichier ${NC\_EXPL\_CFG}/<Nom\_du\_script>.conf. particulier dans le fichier ${NC\_EXPL\_CFG}/<Nom\_du\_script>.conf.
La valeur définie dans "init.conf" sera utlisée sauf si elle a été surchargée dans le fichier de configuration du La valeur définie dans "init.conf" sera utlisée sauf si elle a été surchargée dans le fichier de configuration du
script. script.
Il y a cependant une spécificite pour SH\_RETENTION\_CPT et SH\_RETENTION\_LOG: Il y a cependant une spécificite pour SH\_RETENTION\_CPT et SH\_RETENTION\_LOG:
- ces variables sont definies une et une seule fois lors de la première initialisation. Ce qui signinfie qu'un - ces variables sont definies une et une seule fois lors de la première initialisation. Ce qui signinfie qu'un
script qui aurait surchargé ces variables, ignorera l'initialisation de ces variable si il est appelé par un script qui aurait surchargé ces variables, ignorera l'initialisation de ces variable si il est appelé par un
autre script. autre script.
### 1 - Variables globales générales ### 1 - Variables globales générales
+-------------------+----------------------------+ +-------------------+----------------------------+
| Nom | Usage | | Nom | Usage |
@ -106,13 +106,13 @@ Il y a cependant une spécificite pour SH\_RETENTION\_CPT et SH\_RETENTION\_LOG:
Les variables NC\_EXPL\_ROOT, EXPL\_ROOT et NC\_EXPL\_SRVBATCH sont définies dans le fichier "tetalab.sh" Les variables NC\_EXPL\_ROOT, EXPL\_ROOT et NC\_EXPL\_SRVBATCH sont définies dans le fichier "tetalab.sh"
Les autres variables NC\_* sont définies dans le fichier "profile\_init.env" Les autres variables NC\_* sont définies dans le fichier "profile\_init.env"
### 2 - Variables de session ### 2 - Variables de session
Cette liste n'est pas exhaustive, seules les principales variables sont citées. Cette liste n'est pas exhaustive, seules les principales variables sont citées.
+--------------------+-------------------------------------------------------------------------------+ +--------------------+-------------------------------------------------------------------------------+
| Nom | Usage | | Nom | Usage |
@ -137,17 +137,17 @@ Cette liste n'est pas exhaustive, seules les principales variables sont citées.
Remarque : Les variables SH\_SILENCE et SH\_NIV\_DEBUG sont controlées par les options "-s" et "-dbg" Remarque : Les variables SH\_SILENCE et SH\_NIV\_DEBUG sont controlées par les options "-s" et "-dbg"
si la gestion des options a été activée. si la gestion des options a été activée.
## III - Utilisation du socle bash ## III - Utilisation du socle bash
Cette partie décrit sommairement les quelques règles d'usage pour écrire un script Bash avec le socle. Cette partie décrit sommairement les quelques règles d'usage pour écrire un script Bash avec le socle.
### 1 - Cartouche ### 1 - Cartouche
Les scripts doivent commencer par le cartouche ci-dessous : Les scripts doivent commencer par le cartouche ci-dessous :
+----------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+
| | | |
@ -192,59 +192,59 @@ Les scripts doivent commencer par le cartouche ci-dessous :
Note : Les lignes commençant par 2 "#" sont utilisées pour générer l'aide, leur maintient est donc nécéssaire Note : Les lignes commençant par 2 "#" sont utilisées pour générer l'aide, leur maintient est donc nécéssaire
pour garantir la fiabilité de l'information. Ce sont ces lignes, qui sont lues lors de l'utilisation de pour garantir la fiabilité de l'information. Ce sont ces lignes, qui sont lues lors de l'utilisation de
l'option par defaut "-h". l'option par defaut "-h".
#### 1.1 Elements du cartouche #### 1.1 Elements du cartouche
##### 1.1.1 Meta-données ##### 1.1.1 Meta-données
<Action> : peut prendre les valeurs suivantes -> cre, ano, evo, typo <Action> : peut prendre les valeurs suivantes -> cre, ano, evo, typo
* cre : Création du script. * cre : Création du script.
* evo : Évolution du script -> Ajout de nouvelles fonctionnalités, Amélioration du code. * evo : Évolution du script -> Ajout de nouvelles fonctionnalités, Amélioration du code.
* ano : Correction du code suite à un comportement inattendu. * ano : Correction du code suite à un comportement inattendu.
* typo : Ajout de commentaires, de texte ou corrections gramaticales sans influence sur le code. * typo : Ajout de commentaires, de texte ou corrections gramaticales sans influence sur le code.
<Auteur> : <Prenom> <Nom> <Auteur> : <Prenom> <Nom>
<Version> : Format x.y.z <Version> : Format x.y.z
Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2). Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2).
##### 1.1.2 Paragraphe ##### 1.1.2 Paragraphe
* Mise a jour : Ce paragraphe est utilisé pour suivre l'evolution des versions. La dernière version en * Mise a jour : Ce paragraphe est utilisé pour suivre l'evolution des versions. La dernière version en
vigueur doit être reportée dans le premier paragraphe. vigueur doit être reportée dans le premier paragraphe.
* Dependance : Permêt de définir la liste ainsi que la version des scripts qui sont appelés. * Dependance : Permêt de définir la liste ainsi que la version des scripts qui sont appelés.
Dans le cas d'un changement cela permêt de connaître les scripts qui sont impactés. Dans le cas d'un changement cela permêt de connaître les scripts qui sont impactés.
Pour le moment aucun script n'exploite cette méta-donnée qui est presente pour un future usage. Pour le moment aucun script n'exploite cette méta-donnée qui est presente pour un future usage.
* Liste des options : La déclaration des options n'est pas obligatoire. * Liste des options : La déclaration des options n'est pas obligatoire.
Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait aucune action. Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait aucune action.
Dans ce cas les options par défaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible. Dans ce cas les options par défaut -h, -log, -hist, -cpt, -s et -dbg ne seront pas disponible.
Si le script ne nécessite pas d'option mais que l'on souhaite disposer des options par défaut, il Si le script ne nécessite pas d'option mais que l'on souhaite disposer des options par défaut, il
faudra déclarer une option bidon. faudra déclarer une option bidon.
# @OPT: f:bidon:::::: # @OPT: f:bidon::::::
Si la déclaration existe alors le socle gèrera les paramètres en entrée du script, ainsi que Si la déclaration existe alors le socle gèrera les paramètres en entrée du script, ainsi que
les options par défaut -h, -log, -hist, -cpt, -s et -dbg. Ces mots clé sont reservés et ne les options par défaut -h, -log, -hist, -cpt, -s et -dbg. Ces mots clé sont reservés et ne
peuvent pas être utilisé par le script. peuvent pas être utilisé par le script.
La déclaration est réalisée dans le paragraphe "Liste des options et arguments". Chaque La déclaration est réalisée dans le paragraphe "Liste des options et arguments". Chaque
option est identifiée par l'entête de ligne "# @OPT:" suivi de la description. option est identifiée par l'entête de ligne "# @OPT:" suivi de la description.
La description consiste en une liste de paramètres séparés par ":" La description consiste en une liste de paramètres séparés par ":"
<type>:<nom>:<var>:<nb\_arg>:<def\_val>:<OptE>:<OptI>:<ctl\_val> <type>:<nom>:<var>:<nb\_arg>:<def\_val>:<OptE>:<OptI>:<ctl\_val>
L'ordre des paramètres est figé et tous doivent etre présents. L'ordre des paramètres est figé et tous doivent etre présents.
8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT). 8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT).
Exemple de déclaration valide : Exemple de déclaration valide :
# @OPT: fb:h::0::: # @OPT: fb:h::0:::
# @OPT: fb:s::0::: # @OPT: fb:s::0:::
@ -263,38 +263,38 @@ Exemple de déclaration valide :
* <nom> : nom de l'option (sans le tiret). Attention le nom de l'option est sensible à la casse. * <nom> : nom de l'option (sans le tiret). Attention le nom de l'option est sensible à la casse.
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s) * <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
si plusieurs arguments alors un tableau sera initialisé <var[n]> si plusieurs arguments alors un tableau sera initialisé <var[n]>
L'index [n] commence à zero. L'index [n] commence à zero.
Le nombre d'arguments éffectivement passés a la commande est "${#<var>[*]}". Le nombre d'arguments éffectivement passés a la commande est "${#<var>[*]}".
La valeur max de l'index [n] est "${#<var>[*]} - 1". La valeur max de l'index [n] est "${#<var>[*]} - 1".
* <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "" * <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou ""
si vide ou "0" alors l'option est booléene. si vide ou "0" alors l'option est booléene.
la forme "min/" considere le nombre max non determiné (infini) la forme "min/" considere le nombre max non determiné (infini)
* <def\_val> : Valeur par défaut assignée à <var> * <def\_val> : Valeur par défaut assignée à <var>
Fonctionne si <nb\_arg> vaut 0/1 1/1 Fonctionne si <nb\_arg> vaut 0/1 1/1
* <OptE> : Liste des options mutellement exclusives séparées par une virgule. * <OptE> : Liste des options mutellement exclusives séparées par une virgule.
* <OptI> : Liste des options inclusives séparées par une virgule. * <OptI> : Liste des options inclusives séparées par une virgule.
Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées. Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées.
Le résultat est comparé aux arguments et options sousmis au script Le résultat est comparé aux arguments et options sousmis au script
et les variables suivantes son initialisées ... et les variables suivantes son initialisées ...
* SH\_OPTION\_<nom> : Initialisée à "1" (Vrai) ou "0" (Faux) selon que l'option est respectivement utilisée ou non. * SH\_OPTION\_<nom> : Initialisée à "1" (Vrai) ou "0" (Faux) selon que l'option est respectivement utilisée ou non.
Il existe toujours une variable par option déclarée. Ceci concerne aussi les options par défaut géré par la bibliothèque params.lib Il existe toujours une variable par option déclarée. Ceci concerne aussi les options par défaut géré par la bibliothèque params.lib
* SH\_ARG\_<nom> : Cette variable existe uniquement si le champ <var> est null et si le type n'est pas booléen. * SH\_ARG\_<nom> : Cette variable existe uniquement si le champ <var> est null et si le type n'est pas booléen.
Par défaut elle est initialisée à null ou avec la valeur <def\_val> Par défaut elle est initialisée à null ou avec la valeur <def\_val>
Si le champ <var> est renseigné, alors SH\_ARG\_<nom> est remplacée pas <var>. Si le champ <var> est renseigné, alors SH\_ARG\_<nom> est remplacée pas <var>.
Si l'option associée peut prendre plusieurs arguments, alors les variables SH\_ARG\_<nom> ou <var> sont des tableaux dont l'index commence a zéro. Si l'option associée peut prendre plusieurs arguments, alors les variables SH\_ARG\_<nom> ou <var> sont des tableaux dont l'index commence a zéro.
La taille du tableau peut etre récuperée via ${#SH\_ARG\_<nom>[*]} ou ${#<var>[*]}. La taille du tableau peut etre récuperée via ${#SH\_ARG\_<nom>[*]} ou ${#<var>[*]}.
Les options -h, -s, -log [id], -hist [N] et -dbg N sont prises en charge automatiquement. Ces noms sont donc reservées. Les options -h, -s, -log [id], -hist [N] et -dbg N sont prises en charge automatiquement. Ces noms sont donc reservées.
Les options par défaut réalisent les actions suivantes : Les options par défaut réalisent les actions suivantes :
-h : Affiche l'aide du script (Ligne du cartouche qui commence par "##") -h : Affiche l'aide du script (Ligne du cartouche qui commence par "##")
-s : Mode silence. Plus d'affichage sur le terminal. -s : Mode silence. Plus d'affichage sur le terminal.
@ -306,25 +306,25 @@ Les options par défaut réalisent les actions suivantes :
dont l'option -debug est utilisée. dont l'option -debug est utilisée.
* Arguments : La déclaration des argument du script n'est pas obligatoire * Arguments : La déclaration des argument du script n'est pas obligatoire
Attention : Si aucune option "@OPT:" n'est déclarée alors il n y aura pas de prise en charge des arguments. Attention : Si aucune option "@OPT:" n'est déclarée alors il n y aura pas de prise en charge des arguments.
Si votre script ne nécessite pas d'option, mais qu'il presente des arguments, il faudra alors déclarer une Si votre script ne nécessite pas d'option, mais qu'il presente des arguments, il faudra alors déclarer une
option bidon : option bidon :
# @OPT: f:bidon:::::: # @OPT: f:bidon::::::
La déclaration est réalisé dans le paragraphe "Liste des options et arguments". La déclaration est réalisé dans le paragraphe "Liste des options et arguments".
Elle est identifiée par l'entête de ligne "# @ARG:" suivi de la description. Elle est identifiée par l'entête de ligne "# @ARG:" suivi de la description.
Il ne peut y avoir qu'une ligne de description pour les arguments. (Si plusieurs lignes avec le Il ne peut y avoir qu'une ligne de description pour les arguments. (Si plusieurs lignes avec le
marqueur @ARG existent, alors seule la premiere est prise en compte). marqueur @ARG existent, alors seule la premiere est prise en compte).
La description consiste en une liste de paramètres séparés par ":" La description consiste en une liste de paramètres séparés par ":"
<type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val> <type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val>
L'ordre des paramètres est figé et tous doivent être présents. L'ordre des paramètres est figé et tous doivent être présents.
* <type> : Propriéte de l'attribu défini par l'aggrégation des lettres suivantes: * <type> : Propriéte de l'attribu défini par l'aggrégation des lettres suivantes:
@ -333,70 +333,70 @@ L'ordre des paramètres est figé et tous doivent être présents.
M -> Argument transforme en majuscule M -> Argument transforme en majuscule
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s) * <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
si plusieurs arguments alors un tableau sera initialisé <var[n]> si plusieurs arguments alors un tableau sera initialisé <var[n]>
L'index [n] commence a zero. L'index [n] commence a zero.
Le nombre d'arguments effectivement passés à la commande est "${#<var>[*]}". Le nombre d'arguments effectivement passés à la commande est "${#<var>[*]}".
La valeur max de l'index [n] est "${#<var>[*]} - 1". La valeur max de l'index [n] est "${#<var>[*]} - 1".
Si <var> n'est pas renseigné alors la variable SH\_ARGS[] est initialisée Si <var> n'est pas renseigné alors la variable SH\_ARGS[] est initialisée
* <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "". * <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "".
si vide alors on considère que le nombre d'arguments est a minima de 1. si vide alors on considère que le nombre d'arguments est a minima de 1.
la forme "min/" considère le nombre est a minima de "min". la forme "min/" considère le nombre est a minima de "min".
* <def\_val> : Valeur par défaut assignée a <var> * <def\_val> : Valeur par défaut assignée a <var>
Fonctionne si <nb\_arg> vaut 0/1 1/1 Fonctionne si <nb\_arg> vaut 0/1 1/1
ATTENTION: ATTENTION:
Si le caractère "&" est présent dans la valeur d'un argument, alors cette valeur doit être encadrée Si le caractère "&" est présent dans la valeur d'un argument, alors cette valeur doit être encadrée
par une simple quote et le caractère "&" doit être protégé par un anti-slash "\". par une simple quote et le caractère "&" doit être protégé par un anti-slash "\".
Dans le cas contraire le shell génèrera un fils qui tentera l'execution d'un script portant le nom de la valeur Dans le cas contraire le shell génèrera un fils qui tentera l'execution d'un script portant le nom de la valeur
de l'argument. de l'argument.
#### 1.2 Versionnement sémantique #### 1.2 Versionnement sémantique
##### 1.2.1 Usage ##### 1.2.1 Usage
L'idée de l'utilisation du versionnement sémantique est de définir clairement les intentions L'idée de l'utilisation du versionnement sémantique est de définir clairement les intentions
d'un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en d'un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en
place de dépendances et de déterminer les impacts d'un changement. place de dépendances et de déterminer les impacts d'un changement.
##### 1.2.2 Format ##### 1.2.2 Format
Le format utilisé est le suivant: X.Y.Z Le format utilisé est le suivant: X.Y.Z
* X est l'identifiant de version majeure. * X est l'identifiant de version majeure.
* Y est l'identifiant de version mineure. * Y est l'identifiant de version mineure.
* Z est l'identifiant de version de correction. * Z est l'identifiant de version de correction.
##### 1.2.3 Sémantique ##### 1.2.3 Sémantique
* Version majeure X : Il vaut "0" lors du développement, le script est considéré non valide et ne * Version majeure X : Il vaut "0" lors du développement, le script est considéré non valide et ne
devrait pas être appelé par d'autres scripts. Une fois le script valide la version doit etre 1.0.0 devrait pas être appelé par d'autres scripts. Une fois le script valide la version doit etre 1.0.0
(première version stable). (première version stable).
Il doit etre incrementé si des changements dans le code n'assure plus la compatibilité ascendante. Il doit etre incrementé si des changements dans le code n'assure plus la compatibilité ascendante.
Les identifiants de version mineure et de correction doivent etre remis à zero quand l'identifiant Les identifiants de version mineure et de correction doivent etre remis à zero quand l'identifiant
de version majeure est incrementé. de version majeure est incrementé.
* Version mineur Y : Doit être incrementé lors de l'ajout de nouvelles fonctionnalités ou d'amélioration * Version mineur Y : Doit être incrementé lors de l'ajout de nouvelles fonctionnalités ou d'amélioration
du code qui n'ont pas d'impact sur la compatibilité ascendante. L'identifiant de version de correction doit du code qui n'ont pas d'impact sur la compatibilité ascendante. L'identifiant de version de correction doit
être remis a zero lorsque l'identifiant de version mineure est incrementé. être remis a zero lorsque l'identifiant de version mineure est incrementé.
* Version de correction Z : Doit être incrementé si seules des corrections rétro-compatibles sont introduites. * Version de correction Z : Doit être incrementé si seules des corrections rétro-compatibles sont introduites.
Une correction est définie comme un changement interne qui corrige un comportement incorrect. Une correction est définie comme un changement interne qui corrige un comportement incorrect.
Il peut être incrementé lors de correction typographique ou grammaticale. Il peut être incrementé lors de correction typographique ou grammaticale.
### 2 - Initialisation du socle ### 2 - Initialisation du socle
Par défaut les bibliothèques du socle sont chargées à la connexion. Mais pour qu'elles puissent être operationnelles Par défaut les bibliothèques du socle sont chargées à la connexion. Mais pour qu'elles puissent être operationnelles
il faut initialiser les variables de session. il faut initialiser les variables de session.
Ceci est réalisé en sourcant le fichier "${NC\_EXPL\_CFG}/init.conf" au debut du script : Ceci est réalisé en sourcant le fichier "${NC\_EXPL\_CFG}/init.conf" au debut du script :
Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXPL\_CFG}/init.conf". Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXPL\_CFG}/init.conf".
+----------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+
| | | |
@ -421,10 +421,10 @@ Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXP
### 3 - Structure d'un script ### 3 - Structure d'un script
Voici les éléments qui devraient être présents a minima dans les script Bash. Ceci est recommandé pour Voici les éléments qui devraient être présents a minima dans les script Bash. Ceci est recommandé pour
assurer une homogénéite dans l'ensemble du socle. assurer une homogénéite dans l'ensemble du socle.
+----------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+
| | | |
@ -445,6 +445,7 @@ assurer une homogénéite dans l'ensemble du socle.
| else | | else |
| . ${NC_EXPL_CFG}/init.conf | | . ${NC_EXPL_CFG}/init.conf |
| fi | | fi |
| |
| #----------------------------------------------------------------------------- | | #----------------------------------------------------------------------------- |
| # Definition des fonctions | | # Definition des fonctions |
| #----------------------------------------------------------------------------- | | #----------------------------------------------------------------------------- |
@ -483,42 +484,42 @@ assurer une homogénéite dans l'ensemble du socle.
Note : La construction /G\_VAR1=${G\_AVR1:="Valeur par défaut"}/ permet de définir une variable avec une Note : La construction G\_VAR1=${G\_AVR1:="Valeur par défaut"} permet de définir une variable avec une
valeur par défaut, qui peut être surchargée dans le fichier de configuration {NC\_EXPL\_CFG}/<Nom\_du\_script>.conf valeur par défaut, qui peut être surchargée dans le fichier de configuration {NC\_EXPL\_CFG}/<Nom\_du\_script>.conf
Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V. Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V.
### 4 - Actions réalisées au lancement d un script ### 4 - Actions réalisées au lancement d un script
Le script commence par le chargement de la configuration ". ${NC\_EXPL\_CFG}/init.conf" Le script commence par le chargement de la configuration ". ${NC\_EXPL\_CFG}/init.conf"
un certain nombre d'actions sont effectuées par défaut en plus de l'initialisation des variables de session. un certain nombre d'actions sont effectuées par défaut en plus de l'initialisation des variables de session.
* Initialisation des variables de session (Cf. II.3) * Initialisation des variables de session (Cf. II.3)
* Génération d'un numéro de session unique sous la varable ${SH\_SESSION\_ID} * Génération d'un numéro de session unique sous la varable ${SH\_SESSION\_ID}
* Chargement du fichier ${SH\_FICCFG} * Chargement du fichier ${SH\_FICCFG}
* Rotation des fichiers ${SH\_FICLOG} et ${SH\_FICCPT} selon les rétentions respective ${SH\_RETENTION\_LOG} et ${SH\_RETENTION\_CPT} * Rotation des fichiers ${SH\_FICLOG} et ${SH\_FICCPT} selon les rétentions respective ${SH\_RETENTION\_LOG} et ${SH\_RETENTION\_CPT}
* Purge des fichiers temporaires (${NC\_EXP\_ROOT}/tmp) antérieurs selon la retentions ${SH\_RETENTION\_LOG} et * Purge des fichiers temporaires (${NC\_EXP\_ROOT}/tmp) antérieurs selon la retentions ${SH\_RETENTION\_LOG} et
suppression des fichiers générés par le script utilsant le socle dans ${NC\_EXP\_ROOT}/log et ${NC\_EXP\_ROOT}/cpt suppression des fichiers générés par le script utilsant le socle dans ${NC\_EXP\_ROOT}/log et ${NC\_EXP\_ROOT}/cpt
* Ecriture dans le fichier ${SH\_FICTRC} de la date de début exécution ainsi que les arguments passés au script * Ecriture dans le fichier ${SH\_FICTRC} de la date de début exécution ainsi que les arguments passés au script
* Initialisation du fichier ${SH\_FICLOG} à vide * Initialisation du fichier ${SH\_FICLOG} à vide
* Analyse des paramètres passés au script * Analyse des paramètres passés au script
Cette analyse ne fonctionne que si les options ont été déclarées dans l'entête du script (Cf. III.1.1.2) Cette analyse ne fonctionne que si les options ont été déclarées dans l'entête du script (Cf. III.1.1.2)
## IV - Nomenclature ## IV - Nomenclature
### 1 - Fichiers temporaires ### 1 - Fichiers temporaires
Les fichiers temporaires doivent etre écrits dans le répertoire ${NC\_EXPL\_TMP}. Les fichiers temporaires doivent etre écrits dans le répertoire ${NC\_EXPL\_TMP}.
Les noms des fichiers temporaires sont de la forme : <Libre>\_${SH\_SESSION\_ID}.tmp Les noms des fichiers temporaires sont de la forme : <Libre>\_${SH\_SESSION\_ID}.tmp
De cette facon il seront gérés par le socle (Suppresion automatique). De cette facon il seront gérés par le socle (Suppresion automatique).
### 2 - Nom des exécutables (fichiers du dossier ${EXPL\_ROOT}/bin ) ### 2 - Nom des exécutables (fichiers du dossier ${EXPL\_ROOT}/bin )
Les noms des fichiers doivent être de la forme : Les noms des fichiers doivent être de la forme :
<pre>_<descr> <pre>_<descr>
<pre>_<descr>.<language> <pre>_<descr>.<language>
@ -526,31 +527,31 @@ Les noms des fichiers doivent être de la forme :
<app>_<descr>.<language> <app>_<descr>.<language>
* <pre> : est une des valeurs suivantes : "sys", "dba", "exp", "ctl", "aud", "int" * <pre> : est une des valeurs suivantes : "sys", "dba", "exp", "ctl", "aud", "int"
* "sys" : Scrits d'administration système. * "sys" : Scrits d'administration système.
* "dba" : Scripts d'administration base de données * "dba" : Scripts d'administration base de données
Ces scripts peuvent présenter des risques et doivent faire l'objet d'une attention particulière Ces scripts peuvent présenter des risques et doivent faire l'objet d'une attention particulière
lors de leurs exécution. lors de leurs exécution.
* "exp" : Scripts d'exploitation dévolus principalement aux traitements réccurents * "exp" : Scripts d'exploitation dévolus principalement aux traitements réccurents
Ces scripts sont réservés à l'exploitation courante. Il peuvent modifier le système dans le cadres de Ces scripts sont réservés à l'exploitation courante. Il peuvent modifier le système dans le cadres de
traitements réccurents. traitements réccurents.
Leurs exécution est de risque modére, comme respecter une date d'execution. Leurs exécution est de risque modére, comme respecter une date d'execution.
Il sont reservés à l'exploitation système uniquement. Il sont reservés à l'exploitation système uniquement.
Dans le cas d'un traitement réccurrent pour le compte d'une application le nom doit Dans le cas d'un traitement réccurrent pour le compte d'une application le nom doit
être de la forme <app>\_<descr>.<language> être de la forme <app>\_<descr>.<language>
* "int" : Scripts dédiés aux interfaces entre applications * "int" : Scripts dédiés aux interfaces entre applications
Ces scripts doivent faire l'objet d'une attention particulière car il peuvent modifier Ces scripts doivent faire l'objet d'une attention particulière car il peuvent modifier
les données applicatives et peuvent être contraints par des conditions d'execution. les données applicatives et peuvent être contraints par des conditions d'execution.
* "ctl" : Script de contrôle (dévolu principalement au système de monitoring) * "ctl" : Script de contrôle (dévolu principalement au système de monitoring)
* "aud" : Script d'audit ne modifiant pas le système. * "aud" : Script d'audit ne modifiant pas le système.
Ces scripts peuvent être executés sans aucun risque. Ces scripts peuvent être executés sans aucun risque.
* <descr> est libre, doit refléter si possible la fonction du script. * <descr> est libre, doit refléter si possible la fonction du script.
* <language> est une des valeurs suivantes : * <language> est une des valeurs suivantes :
"sh" : Script Bash. "sh" : Script Bash.
* <app> est le nom de l'application à laquelle le script est dédié. * <app> est le nom de l'application à laquelle le script est dédié.
Ces scripts sont réservés à une application particulière dans le cadres de l'exploitation Ces scripts sont réservés à une application particulière dans le cadres de l'exploitation
réccurente de l'application. réccurente de l'application.