2013-05-07 3 views
0

J'utilise actuellement un script shell que nous utilisons pour déplacer des données, qui est exécuté avec la syntaxe suivante:page Web qui transmet des variables à script shell

./script.sh <env> <y|n> <file> <file> <file> <file> <file> <file> 

$1 sets a variable for production/test 
$2 sets a variable whether we perform a tarball of the destination folder before copying 
$3 - $# is a space delimited list of files to move (there has to be a minimum of one file, no maximum) 

Je dois passer ce script à un autre utilisateur, mais ne lui fais pas confiance avec un accès shell à la boîte.

Ce que je voudrais faire est de créer une page Web avec trois champs. Le champ 1 est un bouton radio de l'environnement, qui sera passé à 1 $. Le champ deux est un bouton radio de oui/non, que je voudrais passer à 2 $. Et Field 3 est une boîte multisélect, que je voudrais être peuplé d'un fichier texte statique, ou (de préférence) d'exécuter un "ls" sur le répertoire source - ce sera $ 3 +

Est-ce possible ? Je peux lancer Apache sur le serveur afin que PHP ou même CGI soit disponible.

merci!

Répondre

0

Oui, c'est possible. Il sera exécuté en tant qu'utilisateur de serveurs Web cependant.

Utilisez simplement system() ou exec() pour appeler votre script bash.

Documentation: http://php.net/manual/en/function.system.php http://php.net/manual/en/function.exec.php

Assurez-vous d'utiliser escapeshellarg()http://www.php.net/manual/en/function.escapeshellarg.php pour se débarrasser de l'entrée non désirée .. Peut-être écrire votre propre liste noire aussi bien.

Exemple:

$script_path = '/path/to/script.sh'; 
system($script_path . ' ' . $argument); 
Questions connexes