\documentclass[a4paper,11pt]{report} \usepackage{ifxetex} \ifxetex %\usepackage{fontspec} %\usepackage{xunicode} \usepackage{xltxtra} \defaultfontfeatures{Mapping=tex-text} % To support LaTeX quoting style \setmainfont{Caviar Dreams} \else \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{amsfonts} \fi \usepackage{pifont} \usepackage{geometry} \usepackage{fancybox} \usepackage{verbatim} \usepackage{eurosym} \usepackage[english, francais]{babel} \usepackage{listings} \usepackage{color} \usepackage{graphicx} \usepackage{hyperref} \usepackage{titlesec} \usepackage{fancyhdr} \usepackage{lastpage} \usepackage{minted} \setlength{\hoffset}{-18pt} \setlength{\oddsidemargin}{0pt} % Marge gauche sur pages impaires \setlength{\evensidemargin}{9pt} % Marge gauche sur pages paires \setlength{\marginparwidth}{54pt} % Largeur de note dans la marge \setlength{\textwidth}{481pt} % Largeur de la zone de texte (17cm) \setlength{\voffset}{-18pt} % Bon pour DOS \setlength{\marginparsep}{7pt} % Séparation de la marge \setlength{\topmargin}{0pt} % Pas de marge en haut \setlength{\headheight}{13pt} % Haut de page \setlength{\headsep}{10pt} % Entre le haut de page et le texte \setlength{\footskip}{27pt} % Bas de page + séparation \setlength{\textheight}{708pt} % Hauteur de la zone de texte (25cm) \definecolor{bg}{rgb}{0.9,0.9,0.9} % TITRE DU DOCUMENT ! \title{Corrigé des exercices : créer un script Zéphir} %\date{} \begin{document} \maketitle \normalsize \vspace{2cm} \textbf{Rédacteurs :} \begin{itemize} \item Emmanuel Garette (egarette@cadoles.com) \item Vincent Febvre (vfebvre@cadoles.com) \newline \end{itemize} \vspace{2cm} \textbf{Version} : 1.0 \newline \chapter{Création d'un script Zéphir : un script python} Un script Zéphir est un script python. Des fonctions de base se proposer pour faciliter l'écriture de ce script. Les scripts doivent être dans /usr/share/zephir/scripts/ et exécutables. \begin{minted}{xml} #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from zephir.lib_zephir import * from creole import fonctionseole \end{minted} \chapter{Création d'un script Zéphir : vérification} Avant il faut vérifier qu'aucun blocage ne soit mis en place pour éviter l'exécuter de l'action. \begin{minted}{xml} #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from zephir.lib_zephir import * from creole import fonctionseole \end{minted} \begin{minted}[bgcolor=bg]{xml} if fonctionseole.init_proc('PERSO') == False: fonctionseole.zephir("ERR" , "procédure supprimer_fichier bloquée par zephir", "PERSO") sys.exit(1) \end{minted} \chapter{Création d'un script Zéphir : début} Avant d'exécuter le script, emettre un message sur le Zéphir. \begin{minted}{xml} #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from zephir.lib_zephir import * from creole import fonctionseole if fonctionseole.init_proc('PERSO') == False: fonctionseole.zephir("ERR" , "procédure supprimer_fichier bloquée par zephir", "PERSO") sys.exit(1) \end{minted} \begin{minted}[bgcolor=bg]{xml} fonctionseole.zephir("INIT" , "script supprimer_fichier en cours d'execution", "PERSO") \end{minted} \chapter{Création d'un script Zéphir : lancement du script en root} Le script principal est exécuter avec l'utilisateur "uucp". Il faut utiliser la fonction sudo\_script pour avoir les droits "root". Si tout se passe bien, deux messages seront remontés : \begin{itemize} \item un message d'information avec le nom du fichier ; \item un message annonçant que le fichier est correctement supprimer. \end{itemize} En cas d'erreur, un message d'erreur est remonté sur le Zéphir. \begin{minted}{xml} #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from zephir.lib_zephir import * from creole import fonctionseole if fonctionseole.init_proc('PERSO') == False: fonctionseole.zephir("ERR" , "procédure supprimer_fichier bloquée par zephir", "PERSO") sys.exit(1) fonctionseole.zephir("INIT" , "script supprimer_fichier en cours d'execution", "PERSO") \end{minted} \begin{minted}[bgcolor=bg]{xml} try: filename = sys.argv[1] fonctionseole.zephir("MSG" , "supprimer_fichier lancé avec l'argument {}".format(filename), "PERSO") sudo_script('supprimer_fichier_sudo.zephir %s' % filename) except Exception, err: fonctionseole.zephir("ERR" , "supprimer_fichier a généré une erreur {}".format(err), "PERSO") sys.exit(1) fonctionseole.zephir("FIN" , "supprimer_fichier {}: OK".format(filename), "PERSO") \end{minted} \chapter{Création du script de suppression des fichiers} Un second script bash est nécessaire. Ce script est utilisé pour supprimer effectivement le fichier sur le serveur. \begin{minted}{bash} #!/bin/bash [ -f "$1" ] && rm -f "$1" \end{minted} Il faut redémarrer z\_stats . \end{document}