Rechercher : dans
Par :

Lancer script sh avc argument grace a php svp

Dernière réponse le 5 déc 2008 à 10:15:36 yukito17, le 4 déc 2008 à 20:56:13 
 Signaler ce message aux modérateurs

Bonjour,

je crée actuellement un serveur d'hébergement web pour mon projet de fin d'année de BTS IG Reseau.
Le but de mon projet et d'automatiser la création de compte web pour mes clients.

Pour cela j'ai installer un serveur Apache que j'ai configurer de façon a ce que chaque personnes aient un dossier dans le /home/utilisateurs/public_html pour pouvoir stocker leurs page web. Chaque Php est renfermer dans leur dossier ce qui permet de garder une haute sécurité.

Maintenant j'en suis à la création de mon interface web afin que mes utilisateurs puissent ce créer un compte.
La programmation du formulaire est plutôt basic et donc simple à réaliser le souci arrive au moment de lancer mon scripte pour créer mes dossiers pour mon utilisateur. je dit bien dossier car je ne créer pas d'utilisateur système ...

woici mon scripte ajouter.sh qui permet d'ajouter un utilisateurs
///////////////////////////////////////// DEBUT DU SCRIPT AJOUTER.SH ///////////////////////////////////////////////
#!/bin/sh

# Informations à compléter
pass_mysql_ftp=ftp
pass_mysql_root=admin
# On vérifie qu'il n'existe pas déjà un autre utilisateur du même nom
if test -d /home/$1 ; then
echo "L'utilisateur existe deja"
else
# On crée les dossiers et on fixe les droits
mkdir /home/$1
mkdir /home/$1/public_html
chown -R www-data.www-data /home/$1
chmod -R 700 /home/$1

# On crée le fichier de configuration pour vsFTPd
echo "anon_world_readable_only=NO" >> /etc/vsftpd/$1
echo "local_root=/home/$1" >> /etc/vsftpd/$1
echo "write_enable=YES" >> /etc/vsftpd/$1
echo "anon_upload_enable=YES" >> /etc/vsftpd/$1
echo "anon_mkdir_write_enable=YES" >> /etc/vsftpd/$1
echo "anon_other_write_enable=YES" >> /etc/vsftpd/$1
echo "hide_file=(none)" >> /etc/vsftpd/$1
echo "force_dot_files=YES" >> /etc/vsftpd/$1

# On ajoute l'utilisateur dans la base de données
mysql -u ftp -p"$pass_mysql_ftp" -D ftp -e "INSERT INTO users (name ,pass) VALUES ('$1', ENCRYPT( '$1' ));"

# On crée une base de données où l'utilisateur est tout-puissant
mysql -u root -p"$pass_mysql_root" -e "CREATE USER '$1'@'localhost' IDENTIFIED BY '$1';GRANT USAGE ON *.* TO '$1'@'localhost' IDENTIFIED BY '$1' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS $1;GRANT ALL PRIVILEGES ON $1.* TO '$1'@'localhost';"

echo "Utilisateur ajoute avec succes"
fi

////////////////////////////////////////////////////////// FIN DU SCRIPT AJOUTER.SH ////////////////////////////////////

Ce scripte fonctionne parfaitement en le lance sur mon serveur /var/www/scripts/ajouter.sh en sudo

Maintenant j'aimerais pouvoir passer en argument sur ma page web php. ajouter_utilisateur.php
le nom et mot de passe de mes clients pour que mon server créer leurs dossier personnel

$nom=$_POST['nom'];
$password=$_POST['password'];
system('/var/www/scripts/ajout.sh'.escapeshellarg($nom).escapeshellarg($password));

Voici ce que j'ai commencer a coder sur ma page web

Mais cela ne marche pas ....

Comment appeler un scripte sh en lui passant des paramètres et en activant le compte root pour la modification des droits sur les fichiers.

Merci de votre aide ;)

Configuration: Linux
Firefox 3.0.4

Meilleures réponses pour « Lancer script sh avc argument grace a php svp » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,...
Script au démarrage et à l'arrêt de Windows VoirL'astuce est valable pour Windows XP, Vista et 7 ; mais la méthode varie suivant l'édition de votre Windows (professionnelle ou familiale). Pour les éditions professionnelles ou intégrales Lancer l'éditeur de stratégie du groupe local : Menu...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

 Flachy Joe, le 5 déc 2008 à 10:15:36

Déjà il manque des espaces pour séparer les arguments entre eux et avec le nom du script.

Ensuite ce n'est pas une bonne idée de faire tourner ton script en tant que root, tu ferais mieux de donner les droit sur le répertoire parent à www-data et les dossiers seront créé par le script avec ce owner (puisqu'il sera lancé par cet utilisateur). ;-) Flachy Joe ;-)
« Il vaut mieux mobiliser son intelligence sur des conneries­ que mobiliser sa connerie sur des choses intelligentes. » L­es Shadoks

Répondre à Flachy Joe