From 78c1c3e19727acabbdcfab4c8db2b7400d2e0e0c Mon Sep 17 00:00:00 2001 From: Doug Le Tough Date: Fri, 21 Jul 2017 13:40:30 +0200 Subject: [PATCH] "Conversion README en markdown" --- README.md | 1055 ++++++++++++++++++++++++++--------------------------- 1 file changed, 527 insertions(+), 528 deletions(-) diff --git a/README.md b/README.md index abfe6f9..92e6a0d 100755 --- a/README.md +++ b/README.md @@ -1,557 +1,556 @@ - # Aide memoire pour l'écriture de scripts avec le socle bash - - * Sommaire - * I - Arborescence du socle - * II - Variables d'environement - * 1 - Variables globales - * 2 - Variables de session - * III - Utilisation du socle bash - * 1 - Cartouche - * 1.1 Élements du cartouche - * 1.2 Versionnement sémantique - * 1.2.1 Usage - * 1.2.2 Format - * 1.2.3 Sémantique - * 2 - Initialisation du socle - * 3 - Structure d'un script - * 4 - Actions realisées au lancement d'un script - * IV - Nomenclature - * 1 - Fichiers temporaires - * 2 - Nom des exécutables - * V - Description et usage des bibliothèques - * 1 - fct\_message - * 2 - fct\_affiche\_ligne - * 3 - fct\_erreur - * 4 - fct\_unique\_exec - * 5 - fct\_libere\_exec - * 6 - fct\_usage - * 7 - fct\_rotation - * 8 - fctpath - * 9 - fct\_params - - - ## 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. - 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 - en découlent. - - Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants : - - +-----------------+-----------------------------------------------------------------------------------------------+ - | Dossier | Description | - +-----------------+-----------------------------------------------------------------------------------------------+ - | {Racine}/bin | Contient les binaires (scripts Bash) | - | {Racine}/conf | Contient les fichiers de configuration des scripts, ainsi que du socle | - | {Racine}/cpt | Contient les fichiers de comtpe-rendus génerés par les script (purge auto, 8 jours par défaut)| - | {Racine}/dat | Contient les fichiers de données gérés par les scripts | - | {Racine}/hist | Contient l'historique d'exécution des scripts (pas de purge) | - | {Racine}/lib | Contient les bibliothèques chargées par le socle | - | {Racine}/log | Contient les fichiers de logs d exécution des scripts (purge auto , 8 jours par défaut ) | - | {Racine}/man | Contient les fichiers d'aide des scripts pour l'utilitaire "man" | - | {Racine}/mod | Contient les fichiers modèles (templates) à usage des scripts | - | {Racine}/msg | Contient les fichiers de messages des scripts utilisés par la bibliothèque "fct_erreur" | - | {Racine}/tmp | Contient les fichiers temporaires des scripts | - +-----------------+-----------------------------------------------------------------------------------------------+ - - - - Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire. - - - ## II - Variables d'environement - - 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 - 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. - 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 - - 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}/.conf. - - La valeur définie dans "init.conf" sera utlisée sauf si elle a été surchargée dans le fichier de configuration du - script. - - 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 - script qui aurait surchargé ces variables, ignorera l'initialisation de ces variable si il est appelé par un - autre script. - - - ### 1 - Variables globales générales - - +-------------------+----------------------------+ - | Nom | Usage | - +-------------------+----------------------------+ - | NC_EXPL_ROOT | Racine /opt/expl | - | EXPL_ROOT | Alias pour NC_EXPL_ROOT | - | NC_EXPL_BIN | Pointe vers {Racine}/bin | - | NC_EXPL_CFG | Pointe vers {Racine}/conf | - | NC_EXPL_CPT | Pointe vers {Racine}/cpt | - | NC_EXPL_DAT | Pointe vers {Racine}/dat | - | NC_EXPL_HST | Pointe vers {Racine}/hist | - | NC_EXPL_LIB | Pointe vers {Racine}/lib | - | NC_EXPL_LOG | Pointe vers {Racine}/log | - | NC_EXPL_MAN | Pointe vers {Racine}/man | - | NC_EXPL_MOD | Pointe vers {Racine}/mod | - | NC_EXPL_MSG | Pointe vers {Racine}/msg | - | NC_EXPL_TMP | Pointe vers {Racine}/tmp | - | RUBYLIB | vaut ${NC_EXPL_LIB} | - | NC_EXPL_SRVBATCH | Nom du serveur Batch | - +-------------------+----------------------------+ - - - - 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" - - - ### 2 - Variables de session - - Cette liste n'est pas exhaustive, seules les principales variables sont citées. - - +--------------------+-------------------------------------------------------------------------------+ - | Nom | Usage | - +--------------------+-------------------------------------------------------------------------------+ - | SH_SESSION_ID | Numero unique d'exécution : _ | - | SH_SILENCE | Active ou non l'affichage des messages via fct_message. Par defaut vaut "non" | - | SH_PROG | Nom du script | - | SH_LOGUSER | Compte initial de connexion au serveur | - | SH_EXECUSER | Compte courant exécutant le script | - | SH_DIR | Dossier hébergeant le script | - | SH_PROG_VERSION | Version du script | - | SH_FICTRC | Pointe vers le fichier ${NC_EXPL_HST}/.hist | - | SH_FICMSG | Pointe vers le fichier ${NC_EXPL_MSG}/.msg | - | SH_FICCFG | Pointe vers le fichier ${NC_EXPL_CFG}/.conf | - | SH_FICSEM | Pointe vers le fichier /dev/shm/.sem | - | SH_FICLOG | Pointe vers le fichier ${NC_EXPL_LOG}/.log | - | SH_FICCPT | Pointe vers le fichier ${NC_EXPL_CPT}/.cpt | - | SH_NIV_DEBUG | Vaut 0 par défaut. Niveau d'affichage dans les fichiers de traces | - | SH_RETENTION_CPT | Vaut 8 par défaut. Duree de rétention en jours des fichiers de compte-rendus | - | SH_RETENTION_LOG | Vaut 8 par défaut. Duree de rétention en jours des fichiers de traces | - +--------------------+-------------------------------------------------------------------------------+ - - - - 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. - - - ## III - Utilisation du socle bash - - Cette partie décrit sommairement les quelques règles d'usage pour écrire un script Bash avec le socle. - - ### 1 - Cartouche - - Les scripts doivent commencer par le cartouche ci-dessous : - - +----------------------------------------------------------------------------------------------------+ - | | - | #!/bin/bash | - | ##---------------------------------------------------------------------------- | - | ## Script : | - | ## Module Puppet : | - | ## Auteur : | - | ## Date : | - | ## Version : | - | ## Objet : | - | ## | - | # ---------------------------------------------------------------------------- | - | # Mise a jour : | - | # - - : | - | # 0.0.1 08-06-2016 - Toto Laricot - Cre : Creation | - | # 0.0.2 08-09-2016 - Titi Alapeti - Ano : Ce truc est faux | - | # ---------------------------------------------------------------------------- | - | # Dependance : | - | # @DEP: : | - | # ---------------------------------------------------------------------------- | - | # Liste des options et arguments | - | # @OPT: ::::::: # | - | # @OPT: :... # | - | # @ARG: :::: # | - | ##---------------------------------------------------------------------------- | - | ## | - | ## Syntaxes : | - | ## -------- | - | ## | - | ## prompt> | - | ## | - | ## : | - | ## | - | ## Fonctionnement : | - | ## -------------- | - | ## | - | ## | - | ## | - | ##---------------------------------------------------------------------------- | - +----------------------------------------------------------------------------------------------------+ - - - - 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 - l'option par defaut "-h". - - #### 1.1 Elements du cartouche - - ##### 1.1.1 Meta-données - - : peut prendre les valeurs suivantes -> cre, ano, evo, typo - * cre : Création du script. - * evo : Évolution du script -> Ajout de nouvelles fonctionnalités, Amélioration du code. - * ano : Correction du code suite à un comportement inattendu. - * typo : Ajout de commentaires, de texte ou corrections gramaticales sans influence sur le code. - - : - - : Format x.y.z - Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2). - - ##### 1.1.2 Paragraphe - - * 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. - - * 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. - 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. - - 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. - - 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. - - # @OPT: f:bidon:::::: - - 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 - peuvent pas être utilisé par le script. - - 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. - - La description consiste en une liste de paramètres séparés par ":" - - ::::::: - - 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). - Exemple de déclaration valide : - - # @OPT: fb:h::0::: - # @OPT: fb:s::0::: - # @OPT: f:dbg:SH_NIV_DEBUG:0/1::: - # @OPT: fb:log::0::: - # @OPT: f:hist:SH_ARG_HIST:0/1:10:: - # @OPT: oM:i:G_INSTANCE:1/1:ALL:dbid: - # @OPT: oM:pr:G_PR_NOM:1/1:sq,t,l: - - * : Propriété de l'attribu défini par l'aggrégation des lettres suivantes: - * f -> Option falcultative - * b -> Booléen - * o -> Option obligatoire - * M -> Argument transformé en majuscule - - * : nom de l'option (sans le tiret). Attention le nom de l'option est sensible à la casse. - - * : nom de la variable dans laquelle sera stockée le(s) argument(s) - si plusieurs arguments alors un tableau sera initialisé - L'index [n] commence à zero. - Le nombre d'arguments éffectivement passés a la commande est "${#[*]}". - La valeur max de l'index [n] est "${#[*]} - 1". - - * : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "" - si vide ou "0" alors l'option est booléene. - la forme "min/" considere le nombre max non determiné (infini) - - * : Valeur par défaut assignée à - Fonctionne si vaut 0/1 1/1 - - * : Liste des options mutellement exclusives séparées par une virgule. - - * : Liste des options inclusives séparées par une virgule. - - Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées. - Le résultat est comparé aux arguments et options sousmis au script - et les variables suivantes son initialisées ... - - * SH\_OPTION\_ : 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 - - * SH\_ARG\_ : Cette variable existe uniquement si le champ est null et si le type n'est pas booléen. - Par défaut elle est initialisée à null ou avec la valeur - Si le champ est renseigné, alors SH\_ARG\_ est remplacée pas . - Si l'option associée peut prendre plusieurs arguments, alors les variables SH\_ARG\_ ou sont des tableaux dont l'index commence a zéro. - La taille du tableau peut etre récuperée via ${#SH\_ARG\_[*]} ou ${#[*]}. - - 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 : - - -h : Affiche l'aide du script (Ligne du cartouche qui commence par "##") - -s : Mode silence. Plus d'affichage sur le terminal. - Initialise la variable SH_SILENCE a "oui" - -log [id] : Affiche le dernier journal ou le journal "id" (identifiant de session d'exécution). - -cpt [id] : Affiche le dernier compte-rendu ou le Compte-rendu "id" (identifiant de session d'execution). - -hist [N] : Affiche l'historique des "N" dernières executions (N=10 par défaut) - -dbg N : Activation du mode debug au niveau "N". Active les messages gérés par la librairie fct_message - dont l'option -debug est utilisée. - - - * 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. - Si votre script ne nécessite pas d'option, mais qu'il presente des arguments, il faudra alors déclarer une - option bidon : - - # @OPT: f:bidon:::::: - - 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. - - 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). - - La description consiste en une liste de paramètres séparés par ":" - - :::: - - L'ordre des paramètres est figé et tous doivent être présents. - - * : Propriéte de l'attribu défini par l'aggrégation des lettres suivantes: - - f -> Argument falcultative - o -> Argument obligatoire - M -> Argument transforme en majuscule - - * : nom de la variable dans laquelle sera stockée le(s) argument(s) - si plusieurs arguments alors un tableau sera initialisé - L'index [n] commence a zero. - Le nombre d'arguments effectivement passés à la commande est "${#[*]}". - La valeur max de l'index [n] est "${#[*]} - 1". - - Si n'est pas renseigné alors la variable SH\_ARGS[] est initialisée - - * : 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. - la forme "min/" considère le nombre est a minima de "min". - - * : Valeur par défaut assignée a - Fonctionne si vaut 0/1 1/1 - - ATTENTION: - 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 "\". - - 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. - - #### 1.2 Versionnement sémantique - - ##### 1.2.1 Usage - - 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 - place de dépendances et de déterminer les impacts d'un changement. - - ##### 1.2.2 Format - - Le format utilisé est le suivant: X.Y.Z - - * X est l'identifiant de version majeure. - * Y est l'identifiant de version mineure. - * Z est l'identifiant de version de correction. - - ##### 1.2.3 Sémantique - - * 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 - (première version stable). - - 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 - de version majeure est incrementé. - - * 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 - ê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. - Une correction est définie comme un changement interne qui corrige un comportement incorrect. - Il peut être incrementé lors de correction typographique ou grammaticale. - +# Aide memoire pour l'écriture de scripts avec le socle bash + +* Sommaire + * I - Arborescence du socle + * II - Variables d'environement + * 1 - Variables globales + * 2 - Variables de session + * III - Utilisation du socle bash + * 1 - Cartouche + * 1.1 Élements du cartouche + * 1.2 Versionnement sémantique + * 1.2.1 Usage + * 1.2.2 Format + * 1.2.3 Sémantique + * 2 - Initialisation du socle + * 3 - Structure d'un script + * 4 - Actions realisées au lancement d'un script + * IV - Nomenclature + * 1 - Fichiers temporaires + * 2 - Nom des exécutables + * V - Description et usage des bibliothèques + * 1 - fct\_message + * 2 - fct\_affiche\_ligne + * 3 - fct\_erreur + * 4 - fct\_unique\_exec + * 5 - fct\_libere\_exec + * 6 - fct\_usage + * 7 - fct\_rotation + * 8 - fctpath + * 9 - fct\_params + + +## 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. +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 +en découlent. + +Sous l'arborescence ${NC\_EXPL\_ROOT} on trouve les dossiers suivants : + + +-----------------+-----------------------------------------------------------------------------------------------+ + | Dossier | Description | + +-----------------+-----------------------------------------------------------------------------------------------+ + | {Racine}/bin | Contient les binaires (scripts Bash) | + | {Racine}/conf | Contient les fichiers de configuration des scripts, ainsi que du socle | + | {Racine}/cpt | Contient les fichiers de comtpe-rendus génerés par les script (purge auto, 8 jours par défaut)| + | {Racine}/dat | Contient les fichiers de données gérés par les scripts | + | {Racine}/hist | Contient l'historique d'exécution des scripts (pas de purge) | + | {Racine}/lib | Contient les bibliothèques chargées par le socle | + | {Racine}/log | Contient les fichiers de logs d exécution des scripts (purge auto , 8 jours par défaut ) | + | {Racine}/man | Contient les fichiers d'aide des scripts pour l'utilitaire "man" | + | {Racine}/mod | Contient les fichiers modèles (templates) à usage des scripts | + | {Racine}/msg | Contient les fichiers de messages des scripts utilisés par la bibliothèque "fct_erreur" | + | {Racine}/tmp | Contient les fichiers temporaires des scripts | + +-----------------+-----------------------------------------------------------------------------------------------+ + + + +Note : Sous chaque dossier vous trouverez un fichier texte lisezmoi.txt decrivant l'usage du répertoire. + + +## II - Variables d'environement + +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 +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. +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 + +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}/.conf. + +La valeur définie dans "init.conf" sera utlisée sauf si elle a été surchargée dans le fichier de configuration du +script. + +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 + script qui aurait surchargé ces variables, ignorera l'initialisation de ces variable si il est appelé par un + autre script. + + +### 1 - Variables globales générales + + +-------------------+----------------------------+ + | Nom | Usage | + +-------------------+----------------------------+ + | NC_EXPL_ROOT | Racine /opt/expl | + | EXPL_ROOT | Alias pour NC_EXPL_ROOT | + | NC_EXPL_BIN | Pointe vers {Racine}/bin | + | NC_EXPL_CFG | Pointe vers {Racine}/conf | + | NC_EXPL_CPT | Pointe vers {Racine}/cpt | + | NC_EXPL_DAT | Pointe vers {Racine}/dat | + | NC_EXPL_HST | Pointe vers {Racine}/hist | + | NC_EXPL_LIB | Pointe vers {Racine}/lib | + | NC_EXPL_LOG | Pointe vers {Racine}/log | + | NC_EXPL_MAN | Pointe vers {Racine}/man | + | NC_EXPL_MOD | Pointe vers {Racine}/mod | + | NC_EXPL_MSG | Pointe vers {Racine}/msg | + | NC_EXPL_TMP | Pointe vers {Racine}/tmp | + | RUBYLIB | vaut ${NC_EXPL_LIB} | + | NC_EXPL_SRVBATCH | Nom du serveur Batch | + +-------------------+----------------------------+ + + + +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" + + +### 2 - Variables de session + +Cette liste n'est pas exhaustive, seules les principales variables sont citées. + + +--------------------+-------------------------------------------------------------------------------+ + | Nom | Usage | + +--------------------+-------------------------------------------------------------------------------+ + | SH_SESSION_ID | Numero unique d'exécution : _ | + | SH_SILENCE | Active ou non l'affichage des messages via fct_message. Par defaut vaut "non" | + | SH_PROG | Nom du script | + | SH_LOGUSER | Compte initial de connexion au serveur | + | SH_EXECUSER | Compte courant exécutant le script | + | SH_DIR | Dossier hébergeant le script | + | SH_PROG_VERSION | Version du script | + | SH_FICTRC | Pointe vers le fichier ${NC_EXPL_HST}/.hist | + | SH_FICMSG | Pointe vers le fichier ${NC_EXPL_MSG}/.msg | + | SH_FICCFG | Pointe vers le fichier ${NC_EXPL_CFG}/.conf | + | SH_FICSEM | Pointe vers le fichier /dev/shm/.sem | + | SH_FICLOG | Pointe vers le fichier ${NC_EXPL_LOG}/.log | + | SH_FICCPT | Pointe vers le fichier ${NC_EXPL_CPT}/.cpt | + | SH_NIV_DEBUG | Vaut 0 par défaut. Niveau d'affichage dans les fichiers de traces | + | SH_RETENTION_CPT | Vaut 8 par défaut. Duree de rétention en jours des fichiers de compte-rendus | + | SH_RETENTION_LOG | Vaut 8 par défaut. Duree de rétention en jours des fichiers de traces | + +--------------------+-------------------------------------------------------------------------------+ + + + +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. + + +## III - Utilisation du socle bash + +Cette partie décrit sommairement les quelques règles d'usage pour écrire un script Bash avec le socle. + +### 1 - Cartouche + +Les scripts doivent commencer par le cartouche ci-dessous : + + +----------------------------------------------------------------------------------------------------+ + | | + | #!/bin/bash | + | ##---------------------------------------------------------------------------- | + | ## Script : | + | ## Module Puppet : | + | ## Auteur : | + | ## Date : | + | ## Version : | + | ## Objet : | + | ## | + | # ---------------------------------------------------------------------------- | + | # Mise a jour : | + | # - - : | + | # 0.0.1 08-06-2016 - Toto Laricot - Cre : Creation | + | # 0.0.2 08-09-2016 - Titi Alapeti - Ano : Ce truc est faux | + | # ---------------------------------------------------------------------------- | + | # Dependance : | + | # @DEP: : | + | # ---------------------------------------------------------------------------- | + | # Liste des options et arguments | + | # @OPT: ::::::: # | + | # @OPT: :... # | + | # @ARG: :::: # | + | ##---------------------------------------------------------------------------- | + | ## | + | ## Syntaxes : | + | ## -------- | + | ## | + | ## prompt> | + | ## | + | ## : | + | ## | + | ## Fonctionnement : | + | ## -------------- | + | ## | + | ## | + | ## | + | ##---------------------------------------------------------------------------- | + +----------------------------------------------------------------------------------------------------+ + + + +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 +l'option par defaut "-h". + +#### 1.1 Elements du cartouche + +##### 1.1.1 Meta-données + + : peut prendre les valeurs suivantes -> cre, ano, evo, typo +* cre : Création du script. +* evo : Évolution du script -> Ajout de nouvelles fonctionnalités, Amélioration du code. +* ano : Correction du code suite à un comportement inattendu. +* typo : Ajout de commentaires, de texte ou corrections gramaticales sans influence sur le code. + + : + + : Format x.y.z +Pour le suivi des versions on utilisera le versionnement sémantique (voir paragraphe III-1.2). + +##### 1.1.2 Paragraphe + +* 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. + +* 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. +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. + +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. + +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. + + # @OPT: f:bidon:::::: + +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 +peuvent pas être utilisé par le script. + +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. + +La description consiste en une liste de paramètres séparés par ":" + + ::::::: - ### 2 - Initialisation du socle +L'ordre des paramètres est figé et tous doivent etre présents. - 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. +8 champs sont obligatoires, soit 7 caracteres ":" (on ne compte pas le caracatere ":" suivant @OPT). +Exemple de déclaration valide : - Ceci est réalisé en sourcant le fichier "${NC\_EXPL\_CFG}/init.conf" au debut du script : + # @OPT: fb:h::0::: + # @OPT: fb:s::0::: + # @OPT: f:dbg:SH_NIV_DEBUG:0/1::: + # @OPT: fb:log::0::: + # @OPT: f:hist:SH_ARG_HIST:0/1:10:: + # @OPT: oM:i:G_INSTANCE:1/1:ALL:dbid: + # @OPT: oM:pr:G_PR_NOM:1/1:sq,t,l: - Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXPL\_CFG}/init.conf". + * : Propriété de l'attribu défini par l'aggrégation des lettres suivantes: + * f -> Option falcultative + * b -> Booléen + * o -> Option obligatoire + * M -> Argument transformé en majuscule - +----------------------------------------------------------------------------------------------------+ - | | - | #!/bin/bash | - | ##---------------------------------------------------------------------------- | - | . | - | | - | . | - | ##---------------------------------------------------------------------------- | - | #----------------------------------------------------------------------------- | - | # Initialisation de l environement | - | #----------------------------------------------------------------------------- | - | if [ ! -f ${NC_EXPL_CFG}/init.conf ] | - | then | - | echo "Fichier d initialisation du socle ${NC_EXPL_CFG}/init.conf n existe pas !" | - | echo "Arret du script par securite" | - | exit 250 | - | else | - | . ${NC_EXPL_CFG}/init.conf | - | fi | - +----------------------------------------------------------------------------------------------------+ + * : nom de l'option (sans le tiret). Attention le nom de l'option est sensible à la casse. + + * : nom de la variable dans laquelle sera stockée le(s) argument(s) +si plusieurs arguments alors un tableau sera initialisé +L'index [n] commence à zero. +Le nombre d'arguments éffectivement passés a la commande est "${#[*]}". +La valeur max de l'index [n] est "${#[*]} - 1". + + * : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "" +si vide ou "0" alors l'option est booléene. +la forme "min/" considere le nombre max non determiné (infini) + + * : Valeur par défaut assignée à +Fonctionne si vaut 0/1 1/1 + + * : Liste des options mutellement exclusives séparées par une virgule. + + * : Liste des options inclusives séparées par une virgule. + +Lors de l'initialisation les marqueurs "@OPT" sont lues et analysées. +Le résultat est comparé aux arguments et options sousmis au script +et les variables suivantes son initialisées ... + + * SH\_OPTION\_ : 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 + + * SH\_ARG\_ : Cette variable existe uniquement si le champ est null et si le type n'est pas booléen. +Par défaut elle est initialisée à null ou avec la valeur +Si le champ est renseigné, alors SH\_ARG\_ est remplacée pas . +Si l'option associée peut prendre plusieurs arguments, alors les variables SH\_ARG\_ ou sont des tableaux dont l'index commence a zéro. +La taille du tableau peut etre récuperée via ${#SH\_ARG\_[*]} ou ${#[*]}. + +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 : + + -h : Affiche l'aide du script (Ligne du cartouche qui commence par "##") + -s : Mode silence. Plus d'affichage sur le terminal. + Initialise la variable SH_SILENCE a "oui" + -log [id] : Affiche le dernier journal ou le journal "id" (identifiant de session d'exécution). + -cpt [id] : Affiche le dernier compte-rendu ou le Compte-rendu "id" (identifiant de session d'execution). + -hist [N] : Affiche l'historique des "N" dernières executions (N=10 par défaut) + -dbg N : Activation du mode debug au niveau "N". Active les messages gérés par la librairie fct_message + dont l'option -debug est utilisée. +* Arguments : La déclaration des argument du script n'est pas obligatoire - ### 3 - Structure d'un script +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 +option bidon : - 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. + # @OPT: f:bidon:::::: - +----------------------------------------------------------------------------------------------------+ - | | - | #!/bin/bash | - | ##---------------------------------------------------------------------------- | - | . | - | | - | . | - | ##---------------------------------------------------------------------------- | - | #----------------------------------------------------------------------------- | - | # Initialisation de l environement | - | #----------------------------------------------------------------------------- | - | if [ ! -f ${NC_EXPL_CFG}/init.conf ] | - | then | - | echo "Fichier d initialisation du socle ${NC_EXPL_CFG}/init.conf n existe pas !" | - | echo "Arret du script par securite" | - | exit 250 | - | else | - | . ${NC_EXPL_CFG}/init.conf | - | fi | - | | - | #----------------------------------------------------------------------------- | - | # Definition des fonctions | - | #----------------------------------------------------------------------------- | - | # | - | function fct_un | - | { ... | - | } | - | | - | #----------------------------------------------------------------------------- | - | function fct_deux | - | { ... | - | } | - | | - | #----------------------------------------------------------------------------- | - | # Programme principal MAIN | - | #----------------------------------------------------------------------------- | - | # | - | fct_message "${SH_PROG}" | - | fct_message "version ${SH_PROG_VERSION}" | - | | - | # -- Initialisation des variables par defaut | - | # -- --------------------------------------- | - | G_VAR1=${G_AVR1:="Valeur par defaut"} # | - | ... | - | | - | # -- Control de coherence des options | - | # -- -------------------------------- | - | | - | # -- Traitement | - | # -- ---------- | - | | - | ... | - | | - | fct_erreur 0 | - +----------------------------------------------------------------------------------------------------+ +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. +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). +La description consiste en une liste de paramètres séparés par ":" - 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}/.conf + :::: - Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V. +L'ordre des paramètres est figé et tous doivent être présents. + * : Propriéte de l'attribu défini par l'aggrégation des lettres suivantes: - ### 4 - Actions réalisées au lancement d un script + f -> Argument falcultative + o -> Argument obligatoire + M -> Argument transforme en majuscule - 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. + * : nom de la variable dans laquelle sera stockée le(s) argument(s) +si plusieurs arguments alors un tableau sera initialisé +L'index [n] commence a zero. +Le nombre d'arguments effectivement passés à la commande est "${#[*]}". +La valeur max de l'index [n] est "${#[*]} - 1". - * Initialisation des variables de session (Cf. II.3) - * Génération d'un numéro de session unique sous la varable ${SH\_SESSION\_ID} - * 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} - * 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 - * 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 - * Analyse des paramètres passés au script +Si n'est pas renseigné alors la variable SH\_ARGS[] est initialisée - Cette analyse ne fonctionne que si les options ont été déclarées dans l'entête du script (Cf. III.1.1.2) + * : 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. +la forme "min/" considère le nombre est a minima de "min". + * : Valeur par défaut assignée a +Fonctionne si vaut 0/1 1/1 +ATTENTION: +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 "\". - ## IV - Nomenclature +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. - ### 1 - Fichiers temporaires +#### 1.2 Versionnement sémantique - Les fichiers temporaires doivent etre écrits dans le répertoire ${NC\_EXPL\_TMP}. - Les noms des fichiers temporaires sont de la forme : \_${SH\_SESSION\_ID}.tmp - De cette facon il seront gérés par le socle (Suppresion automatique). +##### 1.2.1 Usage - ### 2 - Nom des exécutables (fichiers du dossier ${EXPL\_ROOT}/bin ) +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 +place de dépendances et de déterminer les impacts d'un changement. - Les noms des fichiers doivent être de la forme : +##### 1.2.2 Format -
_
-        
_.
-        
__[_].
-        _.
+Le format utilisé est le suivant:  X.Y.Z
 
-
-    * 
 : est une des valeurs suivantes : "sys", "dba", "exp", "ctl", "aud", "int"
-      * "sys" : Scrits d'administration système.
-      * "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
-    lors de leurs exécution.
-      * "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
-    traitements réccurents.
-    Leurs exécution est de risque modére, comme respecter une date d'execution.
-    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
-    être de la forme \_.
-      * "int" : Scripts dédiés aux interfaces entre applications
-    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.
-      * "ctl" : Script de contrôle (dévolu principalement au système de monitoring)
-      * "aud" : Script d'audit ne modifiant pas le système.
-    Ces scripts peuvent être executés sans aucun risque.
-
-    *  est libre, doit refléter si possible la fonction du script.
-
-    *  est une des valeurs suivantes :
-
-        "sh" : Script Bash.
+* X est l'identifiant de version majeure.
+* Y est l'identifiant de version mineure.
+* Z est l'identifiant de version de correction.
         
-    *  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
-    réccurente de l'application.
+##### 1.2.3 Sémantique
+
+* 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
+(première version stable).
+
+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
+de version majeure est incrementé.
+
+* 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
+ê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. 
+Une correction est définie comme un changement interne qui corrige un comportement incorrect.
+Il peut être incrementé lors de correction typographique ou grammaticale.
+
+    
+### 2 - Initialisation du socle
+
+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.
+
+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".
+
+    +----------------------------------------------------------------------------------------------------+
+    |                                                                                                    |
+    |       #!/bin/bash                                                                                  |
+    |       ##----------------------------------------------------------------------------               |
+    |       .                                                                                            |
+    |                                                                                         |
+    |       .                                                                                            |
+    |       ##----------------------------------------------------------------------------               |
+    |       #-----------------------------------------------------------------------------               |
+    |       #                 Initialisation de l environement                                           |
+    |       #-----------------------------------------------------------------------------               |
+    |       if [ ! -f ${NC_EXPL_CFG}/init.conf ]                                                         |
+    |       then                                                                                         |
+    |           echo "Fichier d initialisation du socle ${NC_EXPL_CFG}/init.conf n existe pas !"         |
+    |           echo "Arret du script par securite"                                                      |
+    |           exit 250                                                                                 |
+    |       else                                                                                         |
+    |           . ${NC_EXPL_CFG}/init.conf                                                               |
+    |       fi                                                                                           |
+    +----------------------------------------------------------------------------------------------------+
+
+
+
+### 3 - Structure d'un script
+
+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.
+
+    +----------------------------------------------------------------------------------------------------+
+    |                                                                                                    |
+    |       #!/bin/bash                                                                                  |
+    |       ##----------------------------------------------------------------------------               |
+    |       .                                                                                            |
+    |                                                                                         |
+    |       .                                                                                            |
+    |       ##----------------------------------------------------------------------------               |
+    |       #-----------------------------------------------------------------------------               |
+    |       #                 Initialisation de l environement                                           |
+    |       #-----------------------------------------------------------------------------               |
+    |       if [ ! -f ${NC_EXPL_CFG}/init.conf ]                                                         |
+    |       then                                                                                         |
+    |           echo "Fichier d initialisation du socle ${NC_EXPL_CFG}/init.conf n existe pas !"         |
+    |           echo "Arret du script par securite"                                                      |
+    |           exit 250                                                                                 |
+    |       else                                                                                         |
+    |           . ${NC_EXPL_CFG}/init.conf                                                               |
+    |       fi                                                                                           |
+    |                                                                                                    |
+    |       #-----------------------------------------------------------------------------               |
+    |       #                          Definition des fonctions                                          |
+    |       #-----------------------------------------------------------------------------               |
+    |       #                                                                                            |
+    |       function fct_un                                                                              |
+    |       { ...                                                                                        |
+    |       }                                                                                            |
+    |                                                                                                    |
+    |       #-----------------------------------------------------------------------------               |
+    |       function fct_deux                                                                            |
+    |       { ...                                                                                        |
+    |       }                                                                                            |
+    |                                                                                                    |
+    |       #-----------------------------------------------------------------------------               |
+    |       #                             Programme principal                         MAIN               |
+    |       #-----------------------------------------------------------------------------               |
+    |       #                                                                                            |
+    |       fct_message "${SH_PROG}"                                                                     |
+    |       fct_message "version ${SH_PROG_VERSION}"                                                     |
+    |                                                                                                    |
+    |       # -- Initialisation des variables par defaut                                                 |
+    |       # -- ---------------------------------------                                                 |
+    |       G_VAR1=${G_AVR1:="Valeur par defaut"}           #                                |
+    |       ...                                                                                          |
+    |                                                                                                    |
+    |       # -- Control de coherence des options                                                        |
+    |       # -- --------------------------------                                                        |
+    |                                                                                                    |
+    |       # -- Traitement                                                                              |
+    |       # -- ----------                                                                              |
+    |                                                                                                    |
+    |       ...                                                                                          |
+    |                                                                                                    |
+    |       fct_erreur 0                                                                                 |
+    +----------------------------------------------------------------------------------------------------+
+
+
+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}/.conf
+
+Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V.
+
+
+### 4 - Actions réalisées au lancement d un script
+
+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.
+
+* Initialisation des variables de session (Cf. II.3)
+* Génération d'un numéro de session unique sous la varable ${SH\_SESSION\_ID}
+* 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}
+* 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
+* 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
+* 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)
+
+
+
+## IV - Nomenclature
+
+### 1 - Fichiers temporaires
+
+Les fichiers temporaires doivent etre écrits dans le répertoire ${NC\_EXPL\_TMP}.
+Les noms des fichiers temporaires sont de la forme : \_${SH\_SESSION\_ID}.tmp
+De cette facon il seront gérés par le socle (Suppresion automatique).
+
+### 2 - Nom des exécutables (fichiers du dossier ${EXPL\_ROOT}/bin )
+
+Les noms des fichiers doivent être de la forme :
+
+    
_
+    
_.
+    
__[_].
+    _.
+
+
+* 
 : est une des valeurs suivantes : "sys", "dba", "exp", "ctl", "aud", "int"
+  * "sys" : Scrits d'administration système.
+  * "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
+lors de leurs exécution.
+  * "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
+traitements réccurents.
+Leurs exécution est de risque modére, comme respecter une date d'execution.
+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
+être de la forme \_.
+  * "int" : Scripts dédiés aux interfaces entre applications
+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.
+  * "ctl" : Script de contrôle (dévolu principalement au système de monitoring)
+  * "aud" : Script d'audit ne modifiant pas le système.
+Ces scripts peuvent être executés sans aucun risque.
+
+*  est libre, doit refléter si possible la fonction du script.
+
+*  est une des valeurs suivantes :
+
+    "sh" : Script Bash.
+    
+*  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
+réccurente de l'application.