|
|
|
@ -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". |
|
|
|
|
<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 |
|
|
|
|
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 |
|
|
|
|
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 : |
|
|
|
|
-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. |
|
|
|
|