formations/modules_EOLE_envole/documents/tronc-commun-2/supprimer_fichier.tex

164 lines
4.7 KiB
TeX

\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.
\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}
\end{document}