Shell_exec.cgi est un script CGI déballant le contenu d'un formulaire HTML et le transformant sous la forme de variables d'environnement d'un script shell. Ainsi, avec shell_exec.cgi, vous pouvez facilement rédiger des script CGI en langage de commandes d'Unix.
Shell_exec.cgi est programmé en Ada95 et utilise le paquetage CGI de David A. Wheeler (wheeler@ida.org).
Vous pouvez inclure librement shell_exec.cgi dans toute distribution à la condition expresse de référencer le nom de l'auteur et son organisme d'origine ainsi que celui de David A. Wheeler.
Shell_exec.cgi est un exécutable qui s'installe dans le répertoire cgi-bin de tout serveur web sous Unix. Cette opération peut exiger l'intervention d'un ingénieur système.
Shell_exec.cgi doit être configuré pour exécuter un script shell accessible par le serveur httpd qui le lance. Pour paramétrer shell_exec.cgi, il faut définir :
Ces quatre paramètres sont transmis au moyen de "boutons cachés" dont les noms sont respectivement: SCRIPT_PATH (1), ADD_PATH (2), ERRORF_PATH (3). L'absence de valeur pour la variable ERRORF_PATH provoque l'affichage des traces de stderr dans la fenêtre de réponse, en rouge sur fond rose.
Ainsi, le paramétrage d'un formulaire utilisant l'environnement shell_exec.cgi se fera de la manière suivante:
Attention, vous devez positionner les droits d'accès aux fichiers et répertoires référencés dans les boutons caches comme suit :
Dans cette section, nous considérons un exemple minimal composé d'un formulaire HTML est d'un programme en langage de commande d'Unix.
Le formulaire HTML
Le code du formulaire est donné ci dessous, nous indiquons en rouge les zones qui doivent être modifiées de manière adéquate lorsque vous installerez le serveur. les valeurs données sont alors indicatives.
<HTML><HEAD>
<TITLE>exemple shell_exec</TITLE>
</HEAD>
<BODY TEXT="#5B3D23" BGCOLOR="#EEEEEE" LINK="#F90610"
VLINK="#8C6136">
<FORM action="http://mon_site/cgi-bin/shell_exec.cgi" method="POST">
<H2><CENTER>
<HR SIZE="10">
Saisissez votre nom et titre</CENTER></H2>
Exemple de paramétrisation de shell_exec (2)
<P><CENTER> <INPUT TYPE="hidden" NAME="SCRIPT_PATH" VALUE="/home/chez_moi/mon_script">
<INPUT TYPE="hidden" NAME="DB_PATH" VALUE="/home/chez_moi/BD">
<INPUT TYPE="hidden" NAME="ADD_PATH" VALUE="/home/chez_moi/programmes">
<INPUT TYPE="hidden" NAME="ERRORF_PATH"
<SELECT NAME="TITRE">
<OPTION>Madame
<OPTION SELECTED>Mademoiselle
<OPTION>Monsieur
</SELECT> - <INPUT TYPE="text" NAME="NOM" VALUE="" SIZE=15
MAXLENGTH=15> - <INPUT TYPE="submit" NAME="Envoi" VALUE="Soumettre">
<HR SIZE="10"></CENTER></P></FORM></BODY></HTML>Le source du programme /home/chez_moi/mon_script
Voici le code du script shell qui génère une page HTML simple. Les variables correspondant aux champs du formulaire sont notées en magenta. Elles sont accessibles dans l'environnement d'exécution du script shell référencé via le bouton caché SCRIPT_PATH.
echo "<HTML><BODY>"
echo "<H3> Bonjour $TITRE $NOM </H3>"
echo "</BODY/HTML>"
Shell_exec.cgi impose quelques contraintes, essentiellement dues à la manière dont il transmet les champs du formulaire. Ainsi, les effets ne sont pas garantis lorsque:
Pour ne pas insérer un trou de sécurité sur la machine ou il est installé, shell_exec.cgi effectue quelques vérifications sur le chemin du script qui lui est transmis en paramètre dans le bouton SCRIPT_PATH:
Ainsi, seul un chemin absolu référençant un script shell installé sur la machine serveur peut-être exécuté.
Enfin, 20 secondes de temps CPU sont allouées aux scripts shell invoqués via shell_exec.cgi.
Charger shell_exec.cgi.gz v 2.1 en version exécutable pour PC/Linux (92 Ko).
Charger les sources de shell_exec v 2.1 (compilation garantie avec gnat sous Unix, 20 Ko).
Si vous utilisez shell_exec.cgi et avez des suggestions d'améliorations, contactez moi.