L'ensemble des scripts et bibliothèques bash utilisés pour maintenir l'infrastructure du Tetalab. Ce socle Bash est une version légère et adaptée du socle Bash essentiellement développé par Emmanuel Confrère, éminent DBA Calédonien.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
5.9 KiB

  1. #!/bin/bash
  2. #------------------------------------------------------------------------------------------------------------------
  3. # Script : exp_dummy_script.sh
  4. # Auteur : Doug Le Tough
  5. # Date : 14-08-2017
  6. # Version : 1.2.0
  7. # Objet : Script d'exemple qui liste les VM définies dans son fichier de configuration
  8. #
  9. #------------------------------------------------------------------------------------------------------------------
  10. # Mise a jour :
  11. #
  12. # 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
  13. # 1.2.0 14/08/2017 - Doug Le Tough - Evo : Ajout de l'option -gen_error
  14. #
  15. #------------------------------------------------------------------------------------------------------------------
  16. # Dependances : Aucune
  17. #
  18. #------------------------------------------------------------------------------------------------------------------
  19. # Liste des options et arguments:
  20. #
  21. # @OPT: f:list_vm:list_vm:1/1:true:::
  22. # @OPT: f:gen_error:gen_error:1/1:false:::
  23. # @OPT: f:argv:argv:1/::::
  24. #
  25. #------------------------------------------------------------------------------------------------------------------
  26. # Liste des paramètres de configuration:
  27. #
  28. # DUMMY_VAR="Variable bidon pour test"
  29. # TETALAB_VM[0]=sousetsukenlocal.tetalab.org
  30. # TETALAB_VM[1]=jimmy.local.tetalab.org
  31. # TETALAB_VM[2]=billy.local.tetalab.org
  32. # TETALAB_VM[3]=marian.local.tetalab.org
  33. # TETALAB_VM[4]=sonny.local.tetalab.org
  34. #
  35. #------------------------------------------------------------------------------------------------------------------
  36. # Liste des erreurs:
  37. #
  38. # 2 | erreur | stop | ${ERROR}
  39. # 3 | erreur | exec | rm_temp_dir
  40. #
  41. #------------------------------------------------------------------------------------------------------------------
  42. ##
  43. ## Syntaxe :
  44. ## --------
  45. ##
  46. ## prompt> exp_dummy_script.sh [-list_vm false] [ -gen_error true ] [-argv arg1 arg2 ...]
  47. ##
  48. ## ex:
  49. ## exp_dummy_script.sh -list_vm false -gen_error true -argv plop plip plap
  50. ##
  51. ## Prérequis:
  52. ## ----------
  53. ## - Le script doit être executé par l'utilisateur asr
  54. ##
  55. ## Fonctionnement:
  56. ## ---------------
  57. ## Affiche sa configuration et liste les VM listées dans son fichier de configuration (TETALAB_VM[*]).
  58. ##
  59. ## Si l'option -list_vm est positionnée à false, le script ne fait qu'afficher sa configuration.
  60. ## Par défaut list_vm vaut true.
  61. ##
  62. ## Si l'option -gen_error est positionnée à true, le script génèrera une erreur. Le but de cette option
  63. ## étant d'illustrer la gestion des erreurs. Par défaut gen_error vaut false.
  64. ##
  65. #------------------------------------------------------------------------------------------------------------------
  66. # Initialisation de l'environement
  67. #------------------------------------------------------------------------------------------------------------------
  68. if [ "${USER}" != "asr" ]; then
  69. ERROR="Seul l'utilisateur asr peut utiliser ce script"
  70. echo -e "\033[91m${ERROR}\033[0m"
  71. exit 1
  72. fi
  73. source /etc/profile.d/tetalab.sh
  74. if [ ! -f ${NC_EXPL_CFG}/init.conf ]; then
  75. echo "Le fichier d'initialisation du socle \${NC_EXPL_CFG}/init.conf n'existe pas !"
  76. echo "Arrêt du script par sécurité"
  77. exit 250
  78. fi
  79. source ${NC_EXPL_CFG}/init.conf
  80. #------------------------------------------------------------------------------------------------------------------
  81. # Fonctions
  82. #------------------------------------------------------------------------------------------------------------------
  83. function check_config
  84. {
  85. fct_message "Vérification de la configuration:" -color jaune
  86. if [ ! -r ${SH_FICCFG} ]; then
  87. ERROR="Fichier de configuration ${SH_FICCFG} absent ou illisible"
  88. fct_erreur 2
  89. fi
  90. if [ ${#DUMMY_VAR} -eq 0 ]; then
  91. ERROR="Paramètre manquant ou vide dans le fichier de configuration: DUMMY_VAR"
  92. fct_erreur 2
  93. fi
  94. if [ ${#TETALAB_VM[*]} -eq 0 ]; then
  95. ERROR="Aucune VM définie dans le fichier de configuration"
  96. fct_erreur 2
  97. fi
  98. fct_message " * DUMMY_VAR: ${DUMMY_VAR}"
  99. INDEX=0
  100. for VM in ${TETALAB_VM[@]}
  101. do
  102. fct_message " * VM[${INDEX}]: ${VM}"
  103. INDEX=$(( INDEX+1 ))
  104. done
  105. }
  106. function mk_temp_dir {
  107. TMP_DIR="${NC_EXPL_TMP}/${SH_PROG}_${SH_SESSION_ID}"
  108. fct_message "Création du répertoire temporaire ${TMP_DIR}" -color jaune
  109. mkdir -p ${TMP_DIR}
  110. RET_VAL=$?
  111. if [ ! ${RET_VAL} -eq 0 ]; then
  112. ERROR="Erreur lors de la création du répertoire"
  113. fct_erreur 2
  114. fi
  115. }
  116. function rm_temp_dir {
  117. fct_message "Suppression du répertoire temporaire ${TMP_DIR}" -color jaune
  118. rm -Rf ${TMP_DIR}
  119. RET_VAL=$?
  120. if [ ! ${RET_VAL} -eq 0 ]; then
  121. ERROR="Erreur lors de la suppression du répertoire"
  122. fct_erreur 2
  123. fi
  124. }
  125. function gen_error {
  126. if [ "${gen_error}" == "true" ]; then
  127. fct_message "Génération d'une erreur volontaire:" -color jaune
  128. ERROR="GURU MEDITATION #00001337.00713705"
  129. fct_message " - Erreur: ${ERROR}" -color vert
  130. # On supprime le répertoire temporaire en passant
  131. # par l'erreur 3
  132. fct_erreur 3
  133. # On quitte sur l'affichage de l'erreur et un exit code 2
  134. fct_erreur 2
  135. fi
  136. }
  137. function list_vm
  138. {
  139. if [ "${list_vm}" == "true" ]; then
  140. fct_message "Liste des VM définies dans ${SH_FICCFG}:" -color jaune
  141. INDEX=0
  142. for VM in ${TETALAB_VM[@]}
  143. do
  144. fct_message " * VM[${INDEX}]: ${VM}"
  145. INDEX=$(( INDEX+1 ))
  146. done
  147. fi
  148. }
  149. function print_argv
  150. {
  151. if [ ${#argv} -gt 0 ]; then
  152. fct_message "Arguments optionnels:"
  153. for ARG in ${argv[@]}
  154. do
  155. fct_message " - ${ARG}"
  156. done
  157. fi
  158. }
  159. function cat_piped_data
  160. {
  161. fct_message "Données pipées:"
  162. cat > ${TMP_DIR}/${SH_PROG}_${SH_SESSION_ID}
  163. cat ${TMP_DIR}/${SH_PROG}_${SH_SESSION_ID}
  164. }
  165. #------------------------------------------------------------------------------------------------------------------
  166. # Traitement
  167. #------------------------------------------------------------------------------------------------------------------
  168. check_config
  169. mk_temp_dir
  170. list_vm
  171. print_argv
  172. gen_error
  173. cat_piped_data
  174. rm_temp_dir
  175. fct_erreur 0