From 2bf1f3ff97115f2e726929adc2a14453968b3d9a Mon Sep 17 00:00:00 2001 From: Doug Le Tough Date: Mon, 24 Jul 2017 12:56:37 +0200 Subject: [PATCH] "test sys_refresh_ref_cron.sh" --- bin/sys_refresh_ref_cron.sh | 158 +++++++++++++++++++++++++++++++++ conf/sys_refresh_ref_cron.conf | 10 +++ msg/sys_refresh_ref_cron.msg | 2 + 3 files changed, 170 insertions(+) create mode 100755 bin/sys_refresh_ref_cron.sh create mode 100644 conf/sys_refresh_ref_cron.conf create mode 100644 msg/sys_refresh_ref_cron.msg diff --git a/bin/sys_refresh_ref_cron.sh b/bin/sys_refresh_ref_cron.sh new file mode 100755 index 0000000..e55e6a0 --- /dev/null +++ b/bin/sys_refresh_ref_cron.sh @@ -0,0 +1,158 @@ +#!/bin/bash +#------------------------------------------------------------------------------------------------------------------ +# Script : sys_refresh_ref_cron.sh +# Auteur : Doug Le Tough +# Date : 24-07-2017 +# Version : 1.0.0 +# Objet : Met à jour le référentiel des jobs cron de l'ensemble de l'infra +# accessible par https://ref.tetalab.org +# +# +#------------------------------------------------------------------------------------------------------------------ +# Mise a jour : +# +# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production +# +#------------------------------------------------------------------------------------------------------------------ +# Dependances : Aucune +# +# +#------------------------------------------------------------------------------------------------------------------ +# Liste des options et arguments: +# +# Ce script n'accepte *aucune* option +# +# @OPT: f:bidon:::::: +# +#------------------------------------------------------------------------------------------------------------------ +# Liste des erreurs: +# +# 2 | erreur | stop | ${ERROR} +# +#------------------------------------------------------------------------------------------------------------------ +# Liste des paramètres de configuration: +# +# PGPASSFILE=/home/asr/.pgpass +# DB_TABLE=ref_cron +# TETALAB_USERS[0]=root +# TETALAB_USERS[1]=asr +# TETALAB_VM[0]=sousetsuken.local.tetalab.org +# TETALAB_VM[1]=jimmy.local.tetalab.org +# TETALAB_VM[2]=billy.local.tetalab.org +# TETALAB_VM[3]=marian.local.tetalab.org +# TETALAB_VM[4]=sonny.local.tetalab.org +# TETALAB_VM[5]=web.local.tetalab.org +# +##------------------------------------------------------------------------------------------------------------------ +## +## Syntaxe : +## -------- +## +## prompt> sys_refresh_ref_cron.sh +## +## Prérequis: +## ---------- +## - Le script doit être executé par l'utilisateur asr +## +## Fonctionnement: +## --------------- +## Récupère l'ensemble des cronjobs des utilisateurs listés dans TETALAB_USERS +## mis en place sur les VM définies dans TETALAB_VM et les enregistre dans la table +## DB_TABLE de la base de données "referentiel". +## +## Les informations de connexion à la base de données doivent être stockées dans +## le fichier PGPASSFILE sur sousetsuken au format suivant: +## +## hostname:port:database:username:password +## +## https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html +## +## +#------------------------------------------------------------------------------------------------------------------ +# Initialisation de l'environement +#------------------------------------------------------------------------------------------------------------------ + +if [ "${USER}" != "asr" ]; then + ERROR="Seul l'utilisateur asr peut utiliser ce script" + echo -e "\033[91m${ERROR}\033[0m" + exit 1 +fi + +source /etc/profile.d/tetalab.sh + +if [ ! -f ${NC_EXPL_CFG}/init.conf ]; then + echo "Le fichier d'initialisation du socle \${NC_EXPL_CFG}/init.conf n'éxiste pas !" + echo "Arrêt du script par sécurité" + exit 250 +fi + +source ${NC_EXPL_CFG}/init.conf + +#------------------------------------------------------------------------------------------------------------------ +# Fonctions +#------------------------------------------------------------------------------------------------------------------ + +function check_config +{ + fct_message "Vérification de la configuration:" -color jaune + if [ ! -r ${SH_FICCFG} ]; then + ERROR="Fichier de configuration ${SH_FICCFG} absent ou illisible" + fct_erreur 2 + fi + if [ ! -r ${PGPASSFILE} ]; then + ERROR="Fichier des informations de connexion ${PGPASSFILE} absent ou illisible" + fct_erreur 2 + fi + if [ ${#DB_TABLE} -eq 0 ]; then + ERROR="Paramètre manquant ou vide dans le fichier de configuration: DB_TABLE" + fct_erreur 2 + fi + if [ ${#TETALAB_USERS[*]} -eq 0 ]; then + ERROR="Aucune VM définie dans le fichier de configuration" + fct_erreur 2 + fi + INDEX=0 + for TETALAB_USER in ${TETALAB_USERS[@]} + do + fct_message " * TETALAB_USERS[${INDEX}]: ${TETALAB_USER}" + INDEX=$(( INDEX+1 )) + done + if [ ${#TETALAB_VM[*]} -eq 0 ]; then + ERROR="Aucune VM définie dans le fichier de configuration" + fct_erreur 2 + fi + INDEX=0 + for VM in ${TETALAB_VM[@]} + do + fct_message " * VM[${INDEX}]: ${VM}" + INDEX=$(( INDEX+1 )) + done +} + +function get_cronjobs +{ + fct_message "Récupération des cronjobs:" -color jaune + for VM in ${TETALAB_VM[@]} + do + fct_message " * ${VM}" -color rose + for TETALAB_USER in ${TETALAB_USERS[@]} + do + fct_message " * ${TETALAB_USER}" -color orange + IFS_BAK=${IFS} + IFS=$'\n' + for CRON in $(ssh ${VM} "sudo crontab -u ${TETALAB_USER} -l | grep -v ^\# | grep -v ^$ | grep -v '/usr/bin/run-parts'") + do + echo ${CRON} + done + IFS=${IFS_BAK} + done + done +} + +#------------------------------------------------------------------------------------------------------------------ +# Traitement +#------------------------------------------------------------------------------------------------------------------ + +check_config +get_cronjobs +fct_erreur 0 diff --git a/conf/sys_refresh_ref_cron.conf b/conf/sys_refresh_ref_cron.conf new file mode 100644 index 0000000..96ad06e --- /dev/null +++ b/conf/sys_refresh_ref_cron.conf @@ -0,0 +1,10 @@ +PGPASSFILE=/home/asr/.pgpass +DB_TABLE=ref_cron +TETALAB_USERS[0]=root +TETALAB_USERS[1]=asr +TETALAB_VM[0]=sousetsuken.local.tetalab.org +TETALAB_VM[1]=jimmy.local.tetalab.org +TETALAB_VM[2]=billy.local.tetalab.org +TETALAB_VM[3]=marian.local.tetalab.org +TETALAB_VM[4]=sonny.local.tetalab.org +TETALAB_VM[5]=web.local.tetalab.org diff --git a/msg/sys_refresh_ref_cron.msg b/msg/sys_refresh_ref_cron.msg new file mode 100644 index 0000000..8e0357a --- /dev/null +++ b/msg/sys_refresh_ref_cron.msg @@ -0,0 +1,2 @@ +2 | erreur | stop | ${ERROR} +3 | erreur | continu | ${ERROR}