fond
shell_exec (Unix)

English Abstract

Shell_exec.cgi is an environment that decapsulate CGI format. It allows to easily build CGI-scripts in UNix-shell. It was initially designed to teach the principles of internet programming in an easy way.

The rest is in french... sorry ;-)

Introduction

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 , 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.

Installation

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 trois 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:

Un exemple simple

Considérons un exemple minimal composé d'un formulaire HTML est d'un programme en langage de commande d'Unix.

Voici le code du formulaire. 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>
<form action="http://mon_site/cgi-bin/shell_exec.cgi" method="POST">
<h2>Saisissez votre nom et titre</h2>
<input type="hidden" name="SCRIPT_PATH" value="/chez_moi/mon_script">
<input type="hidden" name="ADD_PATH" VALUE="/home/chez_moi/programmes">
<input type="hidden" name="ERRORF_PATH" value="/tmp/traces">
<select name="titre">
<option selected>Madame
<option>Monsieur
</select> - <input type="text" name="NOM" value="" SIZE=15
MAXLENGTH=15> - <input type="submit" name="Envoi" value="Soumettre">
</p></form></body></html>

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 rouge. 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>"

Limitations

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.

Téléchargement

Vous pouvez télécharger les sources de la version 2.1. Les versions exploitées à l'UPMC (cours en DEUG MIAS) ont été compilées avec gnat.

Crédits

La version actuelle date de Février 2004.