Pour les personnes intérressées, voici le code php & sh complet, parcontre je sais pas si on peut faire plus propre, j'ai bien entendu donné des exemples de username, password et nom de domaine pour des raisons de sécurité.
Et je n'arrive pas à passer mes variables dans mon shell (voir code plus bas).
Code page Php :
<?php//affichage des erreurs phperror_reporting(E_ALL);ini_set('display_errors', TRUE);ini_set('display_startup_errors', TRUE);require('config.php');$username="supraSupra";$password="test";$path="/var/www/".$username;if(!is_dir($path)){mkdir($path,0777, true);}$vhost=$username.".conf";$query_mysql_user="CREATE USER $username@'%' IDENTIFIED BY '$password'";$res_mysql_user=mysqli_query($conn,$query_mysql_user);$query_mysql_grant="GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'";$res_mysql_grant=mysqli_query($conn,$query_mysql_grant);$query_mysql_create_db="CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci";$res_mysql_create_db=mysqli_query($conn,$query_mysql_create_db);$query_mysql_all_privilege="GRANT ALL PRIVILEGES ON $username . * TO $username@'%'";$res_mysql_all_privilege=mysqli_query($conn,$query_mysql_all_privilege);$query_ftp="INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5',$password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')";$res_ftp=mysqli_query($conn,$query_ftp);file_put_contents("/etc/apache2/sites-available/".$vhost,"<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>");$output=exec("./heb.sh $vhost");?>
Code Shell de heb.sh : (se trouvant dans le même dossier)
#!/bin/bash
sudo a2ensite $vhost
sudo service apache2 reload
Avez-vous des idées pour améliorer le code, passer les variables dans mon shell et le rendre plus propre svp ?
Pour donner des variables à un script shell dont on a pas le code.
En bash tu as la commande read.
Sinon pour un sh de base les variables entrées avec le script sont nommées de $1 à $x...
Je n'ai pas regardé ton code php pour être honnête. J'ai eu l'habitude de faire du login/mdp vraiment sécurisés donc cryptés dans un SGBDR.
En gros script.sh test
test devient la variable $1 et si plus d'arguments à passer au script ça sera $2 et $3 etc...(et la commande shift pour passer à la variable suivante)
En bash la commande read semble plus pratique.
Donc la commande à passer à ton script ne devrait pas commencer par un $, vu qu'elle sera considérée comme variable $1 dans le script en lui même.
Passer une variable php dans un script bash (.sh)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.