"Conversion README en markdown"
This commit is contained in:
parent
22986e76c0
commit
964fd90a77
710
README.md
710
README.md
@ -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
|
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.
|
||||||
@ -207,7 +207,7 @@ l'option par defaut "-h".
|
|||||||
<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.
|
||||||
@ -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.
|
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. 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
|
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
|
||||||
@ -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.
|
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è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).
|
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 :
|
||||||
@ -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
|
-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.
|
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::::::"
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
La description consiste en une liste de parametres separes par ":"
|
|
||||||
<type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val>
|
|
||||||
|
|
||||||
L ordre des parametres est fige et tous doivent etre presents.
|
|
||||||
|
|
||||||
<type> : Propriete de l attribu defini par l agregation des lettres suivantes
|
|
||||||
f -> Argument falcultative
|
|
||||||
o -> Argument obligatoire
|
|
||||||
M -> Argument transforme en majuscule
|
|
||||||
|
|
||||||
<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".
|
|
||||||
|
|
||||||
Si <var> n est pas renseigne alors la variable SH\_ARGS[] est initialisee
|
|
||||||
|
|
||||||
<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".
|
|
||||||
|
|
||||||
<def\_val>: Valeur par defaut assignee a <var>
|
|
||||||
Fonctionne si <nb\_arg> vaut 0/1 1/1
|
|
||||||
|
|
||||||
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 "\".
|
|
||||||
|
|
||||||
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 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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
* Arguments : La déclaration des argument du script n'est pas obligatoire
|
||||||
|
|
||||||
2 - fct\_affiche\_ligne
|
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 :
|
||||||
|
|
||||||
Syntaxe : fct\_affiche\_ligne [entete|pied] <elements>
|
# @OPT: f:bidon::::::
|
||||||
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 :
|
La déclaration est réalisé dans le paragraphe "Liste des options et arguments".
|
||||||
- Definition du tableau
|
Elle est identifiée par l'entête de ligne "# @ARG:" suivi de la description.
|
||||||
- Affichage des elements
|
|
||||||
- Fermeture du tableau
|
|
||||||
|
|
||||||
Ces etapes doivent imperativement etre suivies et dans cet ordre.
|
Il ne peut y avoir qu'une ligne de description pour les arguments. (Si plusieurs lignes avec le
|
||||||
Il n est pas possible d imbriquer des tableaux.
|
marqueur @ARG existent, alors seule la premiere est prise en compte).
|
||||||
|
|
||||||
- Definition
|
La description consiste en une liste de paramètres séparés par ":"
|
||||||
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}" ...
|
<type>:<var>:<nb\_arg>:<def\_val>:<ctl\_val>
|
||||||
|
|
||||||
ou bien
|
L'ordre des paramètres est figé et tous doivent être présents.
|
||||||
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
|
* <type> : Propriéte de l'attribu défini par l'aggrégation des lettres suivantes:
|
||||||
|
|
||||||
fct\_affiche\_ligne "<Element1>" "<Element2>" ...
|
f -> Argument falcultative
|
||||||
|
o -> Argument obligatoire
|
||||||
|
M -> Argument transforme en majuscule
|
||||||
|
|
||||||
- Fermeture du tableau
|
* <var> : nom de la variable dans laquelle sera stockée le(s) argument(s)
|
||||||
Cette action permet de liberer les variables de session qui ont ete crees
|
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".
|
||||||
|
|
||||||
fct\_affiche\_ligne pied
|
Si <var> n'est pas renseigné alors la variable SH\_ARGS[] est initialisée
|
||||||
|
|
||||||
Exemple ...
|
|
||||||
|
|
||||||
+
|
* <nb\_arg> : nombre d'arguments attendus de la forme "min/max", "min/", "max" ou "".
|
||||||
| fct\_affiche\_ligne entete "Un tableau" "C1,10" "C2,10" "c3,10"
|
si vide alors on considère que le nombre d'arguments est a minima de 1.
|
||||||
| fct\_affiche\_ligne A B C
|
la forme "min/" considère le nombre est a minima de "min".
|
||||||
| fct\_affiche\_ligne 1 "" 3
|
|
||||||
| fct\_affiche\_ligne pied
|
|
||||||
|
|
|
||||||
+
|
|
||||||
| --------------------------------------
|
|
||||||
| Un tableau
|
|
||||||
| --------------------------------------
|
|
||||||
| C1 | C2 | c3
|
|
||||||
| --------------------------------------
|
|
||||||
| A |B |C
|
|
||||||
| 1 | |3
|
|
||||||
| --------------------------------------
|
|
||||||
+
|
|
||||||
|
|
||||||
+
|
* <def\_val> : Valeur par défaut assignée a <var>
|
||||||
| fct\_affiche\_ligne entete "Un Autre tableau" "C1,10" "G1(C2,20:C3,10:C4,3)" "C5,15"
|
Fonctionne si <nb\_arg> vaut 0/1 1/1
|
||||||
| 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
|
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 "\".
|
||||||
|
|
||||||
Syntaxe : fct\_erreur <N>
|
Dans le cas contraire le shell génèrera un fils qui tentera l'execution d'un script portant le nom de la valeur
|
||||||
Usage : Gestion des erreurs d un script
|
de l'argument.
|
||||||
|
|
||||||
Fonction : Cette fonction doit etre appelee pour sortir d un script du socle.
|
#### 1.2 Versionnement sémantique
|
||||||
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 :
|
##### 1.2.1 Usage
|
||||||
|
|
||||||
0 : Fin normale du script
|
L'idée de l'utilisation du versionnement sémantique est de définir clairement les intentions
|
||||||
250 : <lib:fct\_erreur> Appel de la librairie sans le numero d erreur (<N> non renseigne !)
|
d'un changement dans un code pour les clients de ce dernier. Ceci permet de fiabiliser la mise en
|
||||||
251 : <lib:fct\_erreur> La description de l erreur <N> n existe pas dans le fichier <script>.msg
|
place de dépendances et de déterminer les impacts d'un changement.
|
||||||
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
|
##### 1.2.2 Format
|
||||||
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
|
Le format utilisé est le suivant: X.Y.Z
|
||||||
256 : reserve pur un futur usage
|
|
||||||
|
* X est l'identifiant de version majeure.
|
||||||
|
* Y est l'identifiant de version mineure.
|
||||||
|
* Z est l'identifiant de version de correction.
|
||||||
Le fichier <script>.msg contient les descriptions des codes erreur.
|
|
||||||
Un code par ligne de la forme :
|
##### 1.2.3 Sémantique
|
||||||
<NumErreur> | <type> | <action> | <message> ou <fonction>
|
|
||||||
|
* Version majeure X : Il vaut "0" lors du développement, le script est considéré non valide et ne
|
||||||
<NumErreur> : Entier positif identifiant l erreur
|
devrait pas être appelé par d'autres scripts. Une fois le script valide la version doit etre 1.0.0
|
||||||
|
(première version stable).
|
||||||
<type> : prend les valeurs erreur, alert ou info
|
|
||||||
colorise le message en fonction du type respectivement
|
Il doit etre incrementé si des changements dans le code n'assure plus la compatibilité ascendante.
|
||||||
rouge, orange et bleu
|
Les identifiants de version mineure et de correction doivent etre remis à zero quand l'identifiant
|
||||||
|
de version majeure est incrementé.
|
||||||
<action> : Action a realiser (continu,stop,exec)
|
|
||||||
- continu : Affiche le message puis rend la main au script
|
* Version mineur Y : Doit être incrementé lors de l'ajout de nouvelles fonctionnalités ou d'amélioration
|
||||||
- stop : Affiche le message puis sort en erreur
|
du code qui n'ont pas d'impact sur la compatibilité ascendante. L'identifiant de version de correction doit
|
||||||
- exec : execute la fonction puis rend la main au script
|
être remis a zero lorsque l'identifiant de version mineure est incrementé.
|
||||||
|
|
||||||
<fonction> : Fonction a executer
|
* Version de correction Z : Doit être incrementé si seules des corrections rétro-compatibles sont introduites.
|
||||||
Ce champs peut contenir des variables qui seront valorisees.
|
Une correction est définie comme un changement interne qui corrige un comportement incorrect.
|
||||||
|
Il peut être incrementé lors de correction typographique ou grammaticale.
|
||||||
<message> : Message a afficher (dans les traces et sur la sortie standard)
|
|
||||||
Ce champs peut contenir des variables qui seront valorisees.
|
|
||||||
|
### 2 - Initialisation du socle
|
||||||
4 - fct\_unique\_exec
|
|
||||||
--- ---------------
|
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.
|
||||||
Syntaxe : fct\_unique\_exec [<nom>] [<Occurences>]
|
|
||||||
Usage : Empeche l execution multiple d un code par la l'acquisition de semaphore
|
Ceci est réalisé en sourcant le fichier "${NC\_EXPL\_CFG}/init.conf" au debut du script :
|
||||||
|
|
||||||
Fonction :
|
Remarque: L'analyse des options et arguments est aussi réalisée par "${NC\_EXPL\_CFG}/init.conf".
|
||||||
|
|
||||||
|
+----------------------------------------------------------------------------------------------------+
|
||||||
5 - fct\_libere\_exec
|
| |
|
||||||
--- ---------------
|
| #!/bin/bash |
|
||||||
|
| ##---------------------------------------------------------------------------- |
|
||||||
Syntaxe : fct\_libere\_exec [<nom>]
|
| . |
|
||||||
Usage : Libere les semaphores
|
| <CARTOUCHE> |
|
||||||
|
| . |
|
||||||
Fonction :
|
| ##---------------------------------------------------------------------------- |
|
||||||
|
| #----------------------------------------------------------------------------- |
|
||||||
|
| # Initialisation de l environement |
|
||||||
6 - fct\_usage
|
| #----------------------------------------------------------------------------- |
|
||||||
--- ---------
|
| if [ ! -f ${NC_EXPL_CFG}/init.conf ] |
|
||||||
|
| then |
|
||||||
Syntaxe : fct\_usage
|
| echo "Fichier d initialisation du socle ${NC_EXPL_CFG}/init.conf n existe pas !" |
|
||||||
Usage : Affiche l aide du script.
|
| echo "Arret du script par securite" |
|
||||||
Ce sont les lignes du cartouche commencant par "##"
|
| exit 250 |
|
||||||
|
| else |
|
||||||
Fonction : Cette fonction est uniquement a usage interne du socle.
|
| . ${NC_EXPL_CFG}/init.conf |
|
||||||
Elle est integree a la fonction fct\_params.
|
| fi |
|
||||||
|
| . |
|
||||||
7 - fct\_rotation
|
| . |
|
||||||
--- ------------
|
| |
|
||||||
|
+----------------------------------------------------------------------------------------------------+
|
||||||
Syntaxe :
|
|
||||||
Usage :
|
|
||||||
|
### 3 - Structure d'un script
|
||||||
Fonction :
|
|
||||||
|
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.
|
||||||
8 - fctpath
|
|
||||||
--- -------
|
+----------------------------------------------------------------------------------------------------+
|
||||||
|
| |
|
||||||
Syntaxe :
|
| #!/bin/bash |
|
||||||
Usage :
|
| ##---------------------------------------------------------------------------- |
|
||||||
|
| . |
|
||||||
Fonction :
|
| <CARTOUCHE> |
|
||||||
|
| . |
|
||||||
9 - fct\_params
|
| ##---------------------------------------------------------------------------- |
|
||||||
--- ----------
|
| #----------------------------------------------------------------------------- |
|
||||||
|
| # Initialisation de l environement |
|
||||||
Syntaxe : fct\_params
|
| #----------------------------------------------------------------------------- |
|
||||||
Usage : Gestion des options et arguments du script
|
| if [ ! -f ${NC_EXPL_CFG}/init.conf ] |
|
||||||
|
| then |
|
||||||
Fonction : Cette fonction est uniquement a usage interne du socle.
|
| echo "Fichier d initialisation du socle ${NC_EXPL_CFG}/init.conf n existe pas !" |
|
||||||
Elle est appelee a l initialisation des variables de session lors du chargement du fichier ${NC\_EXPL\_CFG}/init.conf
|
| echo "Arret du script par securite" |
|
||||||
Cette fonction extrait les lignes de declaration "# OPT:" et les compare au arguments sousmis au script
|
| exit 250 |
|
||||||
Pour plus d information voir le paragraphe III-1.1.2
|
| else |
|
||||||
|
| . ${NC_EXPL_CFG}/init.conf |
|
||||||
V - Deploiement via puppet
|
| fi |
|
||||||
-----------------------------------
|
| |
|
||||||
1 - Script avec Hiera
|
| #----------------------------------------------------------------------------- |
|
||||||
--- -----------------
|
| # Definition des fonctions |
|
||||||
Exemple :
|
| #----------------------------------------------------------------------------- |
|
||||||
|
| # |
|
||||||
script\_core\_dtsi::file\_bin\_bash:
|
| function fct_un |
|
||||||
'aud\_process\_swap.sh':
|
| { ... <Code fonction> |
|
||||||
source: 'puppet:///modules/script\_core\_dtsi/bin/aud\_process\_swap.sh'
|
| } |
|
||||||
|
| |
|
||||||
2 - Fichier de conf avec Hiera
|
| #----------------------------------------------------------------------------- |
|
||||||
--- --------------------------
|
| function fct_deux |
|
||||||
Exemple :
|
| { ... |
|
||||||
|
| } |
|
||||||
script\_core\_dtsi::file\_conf\_bash:
|
| |
|
||||||
aud\_process\_swap.conf:
|
| #----------------------------------------------------------------------------- |
|
||||||
source: 'puppet:///modules/script\_core\_dtsi/conf/aud\_process\_swap.conf'
|
| # Programme principal MAIN |
|
||||||
|
| #----------------------------------------------------------------------------- |
|
||||||
3 - Fichier de conf construit depuis un script avec Hiera
|
| # |
|
||||||
--- -----------------------------------------------------
|
| fct_message "${SH_PROG}" |
|
||||||
Exemple :
|
| fct_message "version ${SH_PROG_VERSION}" |
|
||||||
|
| |
|
||||||
script\_core\_dtsi::file\_conf\_hiera::aud\_process\_swap:
|
| # -- Initialisation des variables par defaut |
|
||||||
directives1: "conf1"
|
| # -- --------------------------------------- |
|
||||||
|
| G_VAR1=${G_AVR1:="Valeur par defaut"} # <Comentaire> |
|
||||||
4 - fichier de message avec Hiera
|
| ... |
|
||||||
--- ------------------------------
|
| |
|
||||||
Exemple :
|
| # -- Control de coherence des options |
|
||||||
|
| # -- -------------------------------- |
|
||||||
script\_core\_dtsi::msg\_errors\_hiera::aud\_process\_swap:
|
| |
|
||||||
1: 'erreur | stop | message N 1'
|
| # -- Traitement |
|
||||||
2: 'alert | continu | message N 2'
|
| # -- ---------- |
|
||||||
|
| |
|
||||||
5 - Fichier modele avec Hiera
|
| < ... Code du script ...> |
|
||||||
--- --------------------------
|
| |
|
||||||
Exemple :
|
| fct_erreur 0 |
|
||||||
|
| |
|
||||||
script\_core\_dtsi::file\_mod:
|
+----------------------------------------------------------------------------------------------------+
|
||||||
aud\_process\_swap.mod:
|
|
||||||
source: 'puppet:///modules/script\_core\_dtsi/mod/aud\_process\_swap.mod'
|
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
|
||||||
6 - Fichier SQL avec Hiera
|
|
||||||
--- ----------------------
|
Concernant les fonctions /fct\_message/ et /fct\_erreur/ voir le chapitre V.
|
||||||
Exemple :
|
|
||||||
|
|
||||||
script\_core\_dtsi::is\_bdd: true
|
### 4 - Actions réalisées au lancement d un script
|
||||||
|
|
||||||
script\_core\_dtsi::file\_sql:
|
Le script commence par le chargement de la configuration ". ${NC\_EXPL\_CFG}/init.conf"
|
||||||
aud\_process\_swap.sql:
|
un certain nombre d'actions sont effectuées par défaut en plus de l'initialisation des variables de session.
|
||||||
source: 'puppet:///modules/script\_core\_dtsi/sql/aud\_process\_swap.sql'
|
|
||||||
|
* 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 : <Libre>\_${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 :
|
||||||
|
|
||||||
|
<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" : 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…
Reference in New Issue
Block a user