Browse Source

"Conversion README en markdown"

master
Doug Le Tough 5 years ago
parent
commit
964fd90a77
  1. 686
      README.md

686
README.md

@ -192,9 +192,9 @@ Note : Les lignes commençant par 2 "#" sont utilisées pour générer l'aide, l @@ -192,9 +192,9 @@ Note : Les lignes commençant par 2 "#" sont utilisées pour générer l'aide, l
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 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
* cre : Création du script.
@ -207,7 +207,7 @@ l'option par defaut "-h". @@ -207,7 +207,7 @@ l'option par defaut "-h".
<Version> : Format x.y.z
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
vigueur doit être reportée dans le premier paragraphe.
@ -222,7 +222,9 @@ Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait @@ -222,7 +222,9 @@ Si aucune déclaration n'est présente alors la bibliothèque params.lib ne fait
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. ex: "# @OPT: f:bidon::::::"
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
@ -232,9 +234,10 @@ La déclaration est réalisée dans le paragraphe "Liste des options et argument @@ -232,9 +234,10 @@ La déclaration est réalisée dans le paragraphe "Liste des options et argument
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 ":"
<type>:<nom>:<var>:<nb\_arg>:<def\_val>:<OptE>:<OptI>:<ctl\_val>
L'ordre des paramètre 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).
Exemple de déclaration valide :
@ -298,486 +301,253 @@ Les options par défaut réalisent les actions suivantes : @@ -298,486 +301,253 @@ Les options par défaut réalisent les actions suivantes :
-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 declaration des argument du script n'est pas obligatoire
Attention : Si aucune option "@OPT:" n est declaree alors il n y auras pas de prise en charge des arguments.
Si votre script ne necessite pas d option, mais qu il presente des arguments, alors il faudras declarer
une option bidon :"# @OPT: f:bidon::::::"
* 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 ":"
<type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val>
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:
f -> Argument falcultative
o -> Argument obligatoire
M -> Argument transforme en majuscule
La declaration est realise dans le paragraphe "Liste des options et arguments".
Elle est identifiee par l entete 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 existe, alors seul la premiere et prise en compte)
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
si plusieurs arguments alors un tableau sera initialisé <var[n]>
L'index [n] commence a zero.
Le nombre d'arguments effectivement passés à la commande est "${#<var>[*]}".
La valeur max de l'index [n] est "${#<var>[*]} - 1".
La description consiste en une liste de parametres separes par ":"
<type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val>
Si <var> n'est pas renseigné alors la variable SH\_ARGS[] est initialisée
L ordre des parametres est fige et tous doivent etre presents.
* <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.
la forme "min/" considère le nombre est a minima de "min".
<type> : Propriete de l attribu defini par l agregation des lettres suivantes
f -> Argument falcultative
o -> Argument obligatoire
M -> Argument transforme en majuscule
* <def\_val> : Valeur par défaut assignée a <var>
Fonctionne si <nb\_arg> vaut 0/1 1/1
<var> : nom de la variable dans laquelle sera stockee le(s) argument(s)
si plusieurs arguments alors un tableau sera initialise <var[n]>
L index [n] commence a zero.
Le nombre d arguments effectivement passes a la commande est "${#<var>[*]}".
L valeur max de l index [n] est "${#<var>[*]} - 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 "\".
Si <var> n est pas renseigne alors la variable SH\_ARGS[] est initialisee
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.
<nb\_arg> : nombre d arguments attendus de la forme "min/max", "min/", "max" ou "".
si vide alors on considere que le nombre d arguments est a minima de 1.
la forme "min/" considere le nombre est a minima de "min".
#### 1.2 Versionnement sémantique
<def\_val>: Valeur par defaut assignee a <var>
Fonctionne si <nb\_arg> vaut 0/1 1/1
##### 1.2.1 Usage
ATTENTION
Si le caractere "&" est present dans la valeur d un argument, alors cette valeur doit etre encadree
par une simple cote et le caractere "&" doit etre proteger par un anti-slash "\".
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.
Le cas echeans le shell generera un fils qui tentera l execution d'un script portant le nom de la valeur de l argument.
##### 1.2.2 Format
1.2 Versionnement semantique
1.2.1 Usage
L idee de l utilisation du versionnement semantique est de definir clairement les intentions
d un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en
place de dependances et de determiner les impacts d un changement.
Le format utilisé est le suivant: X.Y.Z
1.2.2 Format
Le format utilise 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.
* 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 Semantique
- Version majeure X : Il vaut "0" lors du developpement, le script est considere non valide et ne
devrait pas etre appele par d autre script. Une fois le script valide la version
doit etre 1.0.0 (premiere version stable).
Il doit etre incremente si des changements dans le code n assure plus la compatibilite
ascendante. Les identifiants de version mineure et de correction doivent etre remis
a zero quand l identifiant de version majeure est incremente.
- Version mineur y : Doit etre incremente lors de l ajout de nouvelle fonctionnalite ou d amelioration
du code qui n on t pas d impact sur la compatibilite ascendante. L identifiant de
version de correction doit être remis a zero lorsque l identifiant de version mineure
est incremente.
- Version de correction z : Doit être incremente si seules des corrections retro-compatibles sont introduites.
Une correction est definie comme un changement interne qui corrige un comportement incorrect.
Il peut etre incremente lors de correction typographique ou grammaticale.
##### 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 defaut les librairies du socle sont chargees a la connexion. Mais pour qu elles puissent etre operationnelles
il faut initialiser les variables de session.
Ceci est realise en sourcant le fichier "${NC\_EXPL\_CFG}/init.conf" au debut du script :
Rem : L analyse des options et arguments est aussi realise par "${NC\_EXPL\_CFG}/init.conf".
+----------------------------------------------------------------------------------------------------+
| |
| #!/bin/bash |
| ##---------------------------------------------------------------------------- |
| . |
| <CARTOUCHE> |
| . |
| ##---------------------------------------------------------------------------- |
| #----------------------------------------------------------------------------- |
| # 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 elements qui devraient etre present a minima dans les script Bash. Ceci est recommande pour
assurer une homogeneite dans l ensemble du socle.
+----------------------------------------------------------------------------------------------------+
| |
| #!/bin/bash |
| ##---------------------------------------------------------------------------- |
| . |
| <CARTOUCHE> |
| . |
| ##---------------------------------------------------------------------------- |
| #----------------------------------------------------------------------------- |
| # 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 |
| { ... <Code fonction> |
| } |
| |
| #----------------------------------------------------------------------------- |
| 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"} # <Comentaire> |
| ... |
| |
| # -- Control de coherence des options |
| # -- -------------------------------- |
| |
| # -- Traitement |
| # -- ---------- |
| |
| < ... Code du script ...> |
| |
| fct\_erreur 0 |
| |
+----------------------------------------------------------------------------------------------------+
Note : La construction /G\_VAR1=${G\_AVR1:="Valeur par defaut"}/ permet de definir une variable avec une
valeur par defaut, qui peut etre surchargee dans le fichier de configuration {NC\_EXPL\_CFG}/<Nom\_du\_script>.conf
Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V.
4 - Actions realisees au lancement d un script
Le script commence par le chargement de la configuration ". ${NC\_EXPL\_CFG}/init.conf"
un certain nombre d action sont effectuees par defaut en plus de l initialisation des variables de session.
- Initialisation des variables de session (Cf. II.3)
- Generation d'un numero de session unique sous la varable ${SH\_SESSION\_ID}
- Chargement du fichier ${SH\_FICCFG}
- Rotation des fichiers ${SH\_FICLOG} et ${SH\_FICCPT} selon les retentions respective ${SH\_RETENTION\_LOG} et ${SH\_RETENTION\_CPT}
- Purge des fichiers temporaires (${NC\_EXP\_ROOT}/tmp) anterieurs selon la retentions ${SH\_RETENTION\_LOG}
et suppression des fichiers generes 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 debut execution, ainsi que des arguments passes au script
- Initialisation du fichier ${SH\_FICLOG} a vide
- Analyse des parametres passes au script
Cette analyse ne fonctionne que si les options ont ete declarees dans l entete du script (Cf. III.1.1.2)
IV - Nomenclature
------------
1 - Fichier temporaire
Les fichiers temporaires doivent etre ecrits dans le repertoire ${NC\_EXPL\_TMP}.
Les noms des fichiers temporaires sont de le forme : <Libre>\_${SH\_SESSION\_ID}.tmp
De cette facon il seront geres par le socle (Suppresion automatique)
2 - Nom des executables ( fichiers du dossier {racine}/bin )
Les noms des fichiers doit etre de la forme :
<pre>\_<descr>
<pre>\_<descr>.<language>
<pre>\_<app\_source>\_<app\_dest>[\_<libre>].<language>
<app>\_<descr>.<language>
<pre> est une des valeurs suivantes : "sys", "dba", "exp", "ctl", "aud", "int"
- "sys" : Scrit d administration systeme.
- "dba" : Script d administration base de donnees
Ces scripts peuvent presenter des risques et doivent faire
l objet d une attention particuliere lors de leurs execution.
- "exp" : Script d exploitation devolue principalement au traitement reccurent
Ces scripts sont reserves a l'exploitation courante. Il peuvent
modifier le systeme dans le cadres de traitements reccurents.
Leurs execution est de risque modere, comme respecter une date d execution.
Il sont reserves a l exploitation systeme uniquement. Dans le cas d un traitement
reccurrent pour le compte d une application le nom doit etre de la forme <app>\_<descr>.<language>
- "int" : Script dedier aux interfaces entre applications
Ces script doivent fair l objet d une attention particuliere car il peuvent modifier
les donnees applicative et peuvent etre contraint par des conditions d execution.
- "ctl" : Script de controle (devolu principalement a icinga)
- "aud" : Script d audit ne modifiant pas le systeme.
Ces scripts peuvent etre executes sans aucun risque.
<descr> est libre, doit refleter si possible la fonction du script.
<language> est une des valeurs suivantes :
- "rb" : Script Ruby.
- "sh" : Script Bash.
- Pas d extention : Script C
<app> est le nom de application a laquelle le script est dedie.
Ces scripts sont reserves a une application particuliere,
dans le cadres de l exploitation reccurente de l'application.
V - Description et usage des Librairies
-----------------------------------
1 - fct\_message
--- -----------
Syntaxe : fct\_message [-cpt] [-hist] [-nolog] [-debug N] [-color Couleur] "<Message a ecrire>"
Usage : Cette fonction est a utiliser en remplacement de la commande "echo".
Elle ajoute l horadatage au message et gere la ventilation des ecritures dans les differents fichiers de traces.
Fonction : Par defaut le message est affiche sur le terminal et est ecrit dans le fichier journal ${NC\_EXPL\_LOG}/<nom\_du\_script>.log
Les options modifient la destination de l ecriture :
- cpt : Ecrit en plus du journal dans le fichier de compte-rendu ${NC\_EXPL\_CPT}/<nom\_du\_script>.cpt
- hist : Ecrit uniquement dans le fichier d historique des executions ${NC\_EXPL\_TRC}/<nom\_du\_script>.hist
- nolog : inhibe l ecritutre dans le fichier journal
- debug N : N'affiche pas le message sur le terminal mais uniquement dans le fichier journal, a condition
que le script soit execute en mode debug de niveau equivalent a "N" via l'option "-dbg N".
Par defaut le niveau de debug est 0, ainsi si "N" vaut zero alors le message est ecrit
uniquement dans le fichier journal.
- color : Affiche le message en couleur. Les couleurs reconues sont : vert,rouge,bleu,cyan,jaune,orange,blanc et noir
2 - fct\_affiche\_ligne
--- -----------------
Syntaxe : fct\_affiche\_ligne [entete|pied] <elements>
Usage : Affiche un tableau sur la sortie standard et dans le fichier compte-rendu ${NC\_EXPL\_ROOT}/<script>.cpt
Fonction : 3 etapes sont necessaires pour creer un tableau :
- Definition du tableau
- Affichage des elements
- Fermeture du tableau
Ces etapes doivent imperativement etre suivies et dans cet ordre.
Il n est pas possible d imbriquer des tableaux.
- Definition
Elle realise par l appel de la fonction fct\_affiche\_ligne avec l argument entete la forme est alors la suivante :
fct\_affiche\_ligne entete "{Titre}" "{Colonne\_1},{Taille\_1}" "{Colonne\_2},{Taille\_2}" "{Colonne\_3},{Taille\_3}" "{Colonne\_4},{Taille\_4}" ...
ou bien
fct\_affiche\_ligne entete "{Titre}" "Groupe1({Colonne\_1},{Taille\_1}:{Colonne\_2},{Taille\_2})" "{Colonne\_3},{Taille\_3}" "{Colonne\_4},{Taille\_4}" "Groupe2({Colonne\_4},{Taille\_4}:...)"
- Affichage des elements
fct\_affiche\_ligne "<Element1>" "<Element2>" ...
- Fermeture du tableau
Cette action permet de liberer les variables de session qui ont ete crees
fct\_affiche\_ligne pied
Exemple ...
+
| fct\_affiche\_ligne entete "Un tableau" "C1,10" "C2,10" "c3,10"
| fct\_affiche\_ligne A B C
| fct\_affiche\_ligne 1 "" 3
| fct\_affiche\_ligne pied
|
+
| --------------------------------------
| Un tableau
| --------------------------------------
| C1 | C2 | c3
| --------------------------------------
| A |B |C
| 1 | |3
| --------------------------------------
+
+
| fct\_affiche\_ligne entete "Un Autre tableau" "C1,10" "G1(C2,20:C3,10:C4,3)" "C5,15"
| fct\_affiche\_ligne A B C D E
| fct\_affiche\_ligne 1 "" 3 3 4
| fct\_affiche\_ligne pied
|
+
| ------------------------------------------------------------------------
| Un Autre tableau
| ------------------------------------------------------------------------
| | G1 |
| C1 |-----------------------------------------| C5
| | C2 | C3 | C4 |
| ------------------------------------------------------------------------
| A |B |C |D |E
| 1 | |3 |3 |4
| ------------------------------------------------------------------------
+
3 - fct\_erreur
--- ----------
Syntaxe : fct\_erreur <N>
Usage : Gestion des erreurs d un script
Fonction : Cette fonction doit etre appelee pour sortir d un script du socle.
Elle affiche le message d erreur associe au code qui est lu dans le fichier ${NC\_EXPL\_MSG}/<script>.msg
Elle execute eventuellement une fonction rattachee, specifiee dans ce meme fichier.
Elle ferme les fichiers de traces, supprime les fichiers temporaires, libere les semaphores et
renvoi un code retour au script appelant.
N est un entier positif dont les valeurs suivantes sont reservees :
0 : Fin normale du script
250 : <lib:fct\_erreur> Appel de la librairie sans le numero d erreur (<N> non renseigne !)
251 : <lib:fct\_erreur> La description de l erreur <N> n existe pas dans le fichier <script>.msg
252 : <lib:fct\_erreur> Le fichier <script>.msg n existe pas
253 : <lib:fct\_erreur> La description de l erreur dans le fichier <script>.msg est incorrecte
254 : <lib:fct\_params> Erreur a ete remontee par la librairie
255 : <lib:fct\_erreur> Appel de la librairie avec un numero d erreur >= 250
256 : reserve pur un futur usage
Le fichier <script>.msg contient les descriptions des codes erreur.
Un code par ligne de la forme :
<NumErreur> | <type> | <action> | <message> ou <fonction>
<NumErreur> : Entier positif identifiant l erreur
<type> : prend les valeurs erreur, alert ou info
colorise le message en fonction du type respectivement
rouge, orange et bleu
<action> : Action a realiser (continu,stop,exec)
- continu : Affiche le message puis rend la main au script
- stop : Affiche le message puis sort en erreur
- exec : execute la fonction puis rend la main au script
<fonction> : Fonction a executer
Ce champs peut contenir des variables qui seront valorisees.
<message> : Message a afficher (dans les traces et sur la sortie standard)
Ce champs peut contenir des variables qui seront valorisees.
4 - fct\_unique\_exec
--- ---------------
Syntaxe : fct\_unique\_exec [<nom>] [<Occurences>]
Usage : Empeche l execution multiple d un code par la l'acquisition de semaphore
Fonction :
5 - fct\_libere\_exec
--- ---------------
Syntaxe : fct\_libere\_exec [<nom>]
Usage : Libere les semaphores
Fonction :
6 - fct\_usage
--- ---------
Syntaxe : fct\_usage
Usage : Affiche l aide du script.
Ce sont les lignes du cartouche commencant par "##"
Fonction : Cette fonction est uniquement a usage interne du socle.
Elle est integree a la fonction fct\_params.
7 - fct\_rotation
--- ------------
Syntaxe :
Usage :
Fonction :
8 - fctpath
--- -------
Syntaxe :
Usage :
Fonction :
9 - fct\_params
--- ----------
### 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 |
| ##---------------------------------------------------------------------------- |
| . |
| <CARTOUCHE> |
| . |
| ##---------------------------------------------------------------------------- |
| #----------------------------------------------------------------------------- |
| # 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 |
| ##---------------------------------------------------------------------------- |
| . |
| <CARTOUCHE> |
| . |
| ##---------------------------------------------------------------------------- |
| #----------------------------------------------------------------------------- |
| # 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 |
| { ... <Code fonction> |
| } |
| |
| #----------------------------------------------------------------------------- |
| 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"} # <Comentaire> |
| ... |
| |
| # -- Control de coherence des options |
| # -- -------------------------------- |
| |
| # -- Traitement |
| # -- ---------- |
| |
| < ... Code du script ...> |
| |
| 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}/<Nom\_du\_script>.conf
Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V.
Syntaxe : fct\_params
Usage : Gestion des options et arguments du script
Fonction : Cette fonction est uniquement a usage interne du socle.
Elle est appelee a l initialisation des variables de session lors du chargement du fichier ${NC\_EXPL\_CFG}/init.conf
Cette fonction extrait les lignes de declaration "# OPT:" et les compare au arguments sousmis au script
Pour plus d information voir le paragraphe III-1.1.2
V - Deploiement via puppet
-----------------------------------
1 - Script avec Hiera
--- -----------------
Exemple :
### 4 - Actions réalisées au lancement d un script
script\_core\_dtsi::file\_bin\_bash:
'aud\_process\_swap.sh':
source: 'puppet:///modules/script\_core\_dtsi/bin/aud\_process\_swap.sh'
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.
2 - Fichier de conf avec Hiera
--- --------------------------
Exemple :
* 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
script\_core\_dtsi::file\_conf\_bash:
aud\_process\_swap.conf:
source: 'puppet:///modules/script\_core\_dtsi/conf/aud\_process\_swap.conf'
Cette analyse ne fonctionne que si les options ont été déclarées dans l'entête du script (Cf. III.1.1.2)
3 - Fichier de conf construit depuis un script avec Hiera
--- -----------------------------------------------------
Exemple :
script\_core\_dtsi::file\_conf\_hiera::aud\_process\_swap:
directives1: "conf1"
4 - fichier de message avec Hiera
--- ------------------------------
Exemple :
## IV - Nomenclature
script\_core\_dtsi::msg\_errors\_hiera::aud\_process\_swap:
1: 'erreur | stop | message N 1'
2: 'alert | continu | message N 2'
### 1 - Fichiers temporaires
5 - Fichier modele avec Hiera
--- --------------------------
Exemple :
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
De cette facon il seront gérés par le socle (Suppresion automatique).
script\_core\_dtsi::file\_mod:
aud\_process\_swap.mod:
source: 'puppet:///modules/script\_core\_dtsi/mod/aud\_process\_swap.mod'
### 2 - Nom des exécutables (fichiers du dossier ${EXPL\_ROOT}/bin )
6 - Fichier SQL avec Hiera
--- ----------------------
Exemple :
Les noms des fichiers doivent être de la forme :
script\_core\_dtsi::is\_bdd: true
<pre>_<descr>
<pre>_<descr>.<language>
<pre>_<app_source>_<app_dest>[_<libre>].<language>
<app>_<descr>.<language>
script\_core\_dtsi::file\_sql:
aud\_process\_swap.sql:
source: 'puppet:///modules/script\_core\_dtsi/sql/aud\_process\_swap.sql'
* <pre> : 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 <app>\_<descr>.<language>
* "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.
* <descr> est libre, doit refléter si possible la fonction du script.
* <language> est une des valeurs suivantes :
"sh" : Script Bash.
* <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
réccurente de l'application.

Loading…
Cancel
Save