Ajout de scripts personnalisés
Les scripts personnalisés doivent obligatoirement avoir l'extension .zephir
et être placés sur le serveur client dans le répertoire : /usr/share/zephir/scripts/
.
Truc & astuce
Pour placer le script au bon endroit, vous pouvez utiliser le mécanisme de variante.
Exemple
Ce script peut être inséré dans les fichiers divers d'un serveur avec pour destination : /usr/share/zephir/scripts/test_perso.zephir
.
Il ne fait rien de particulier mais peut servir de base pour utiliser les mécanismes de log et de remontée d'état.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
###########################################################################
# Eole NG - 2007
# Copyright Pole de Competence Eole (Ministere Education - Academie Dijon)
# Licence CeCill cf
/root/LicenceEole.txt
# eole@ac-dijon.fr
#
# test_perso.zephir
#
# exemple de script personnalisé pour le client zephir
#
###########################################################################
import os, sys
from zephir.lib_zephir import *
from creole import fonctionseole
if fonctionseole.init_proc('PERSO') == False:
fonctionseole.zephir("MSG" , "procédure test_perso bloquée par Zéphir", "PERSO")
sys.exit(1)
fonctionseole.zephir("INIT" , "script test_perso en cours d'execution", "PERSO")
try:
message = sys.argv[1]
fonctionseole.zephir("MSG" , "test_perso lancé avec l'argument %s" % message, "PERSO")
except:
fonctionseole.zephir("ERR" , "test_perso lancé sans argument", "PERSO")
exit(1)
if is_locked(['reconfigure']):
fonctionseole.zephir("ERR" , "test_perso stoppé : reconfigure en cours", "PERSO")
exit(1)
else:
fonctionseole.zephir("FIN" , "test_perso : OK", "PERSO")
L'appel à la fonction init_proc('PERSO')
permet de vérifier et de bloquer l'exécution de la procédure depuis l'application Zéphir. L'interdiction peut être faite depuis l'action interdiction de fonctions
dans les actions du serveur.
Nous avons ajouté une catégorie PERSO
qui peut être utilisée dans des scripts additionnels si besoin. La fonction Zéphir du module fonctionseole
permet de faire remonter des informations au serveur Zéphir par l'intermédiaire de fichiers journaux. L'appel est fait sous la forme suivante :
fonctionseole.zephir(<etat>, <message>, <type>)
<etat>
indique au serveur Zéphir la finalité du message :-
INIT
pour indiquer le début d'une action ; -
MSG
pour un message d'information ; -
ERR
pour indiquer que l'action s'est mal terminée (suivant la valeur du champ type, le serveur peut passer en alerte dans Zéphir) ; -
FIN
pour indiquer que l'action s'est terminée correctement.
-
<message>
est le message à afficher dans les logs du serveur ;<type>
est un libellé qui permet au serveur Zéphir de classer les jounaux dans différentes catégories (par exempleMAJ
,RECONFIGURE
, ...).Pour les scripts personnalisés, il est recommandé d'utiliser le type
PERSO
.
Ces journaux sont envoyés en temps réel au serveur Zéphir (en cas d'erreur de connexion, ils sont stockés et réexpédiés après un retour à la normale). Ils sont également envoyés dans le fichier syslog
sur la machine cliente avec le préfixe zephir
.
Par exemple : Apr 15 15:41:15 horus zephir: INSTANCE => FIN : Instanciation terminée
.
Remarque
Le client Zéphir lance les scripts en tant qu'utilisateur uucp
. Si des droits plus élevés sont nécessaires, il est possible d'utiliser la commande sudo_script
pour lancer un script avec des droits root
:
from zephir.lib_zephir import sudo_script
sudo_script('mon_script.zephir')
Dans le cas d'ajout d'un nouveau script, il faut redémarrer le service z_stats
pour que le script soit pris en compte par sudoers
.