[php/ssh] probleme variable bizard!

Fermé
helping - 3 juil. 2007 à 02:34
 Utilisateur anonyme - 24 oct. 2007 à 12:05
J'ai un problème avec shh. Un gros problèmes de variables qui peut être résolu facilement j'en suis sur.
Tous marche sauf les variables entre deux choses exemple:
mkdir /home/$utilisateur/www \n
J’ai déjà essayé
mkdir /home/."$utilisateur"./www \n
mkdir /home/{$utilisateur}/www \n
En replace j'ai essayer aussi. En faite jusque la rien.
C'est pour cela que je demande de l'aide. Merci de ne pas me donner de lien vers le site php…


<? 
$utilisateur = "test";
$sonpass = "test";
$varbash = "useradd $utilisateur -p $sonpassword -m -k /etc/skel -s /bin/bash \n
passwd $sonpassword \n
$sonpassword \n
$sonpassword \n
quotatool -u $utilisateur -bq 599M -l '600 Mb' /home \n
mkdir /home/$utilisateur/www \n
chown -R $utilisateur /home/$utilisateur/www \n
cd /home/$utilisateur/www \n
wget http://lesiteweb/heb/index.html \n
mysql -p \n
$passroot \n
CREATE USER $utilisateur; SET PASSWORD FOR '$utilisateur'= PASSWORD('$sonpassword'); CREATE DATABASE `$utilisateur`; GRANT ALL PRIVILEGES ON `$utilisateur` . * TO '$utilisateur'; GRANT USAGE ON * . * TO '$utilisateur'IDENTIFIED BY '$sonpassword' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; \n
exit; \n
exit; \n";
// deux exite c'est normal une pour quitter sql l'autre pour close le pid ssh

$connection = ssh2_connect('ip', 22);
ssh2_auth_password($connection, 'root', 'lepass');
$stream = ssh2_exec($connection, $varbash);

?>


Si y en as un qui peut me donner la solutions ou carrement un autre script ssh ou je n'aurais pas de problème
A voir également:

4 réponses

Bonjour,
J'essaie d'effectuer à peut près la même manip mais moi je rencontre un problème bien avant l'insertion d'une variable.
Mon problème c'est que je n'arrive pas à récupérer la main.
Je m'explique. Je veux juste récupérer le résultat de la commande elect status from v$instance sur une base oracle.
J'ai donc le code suivant:

$commande_ssh = 'sqlplus system/manager@demoweb; \n
select status from v$instance; \n
exit; \n
exit; \n';

echo 'Lancement de la commande : '.$commande_ssh;

$stream = ssh2_exec($connection, $commande_ssh);

stream_set_blocking( $stream, true );
$data = "";
while( $buf = fread($stream,10) )
{
$data .= '<hr />'.$buf;
}
fclose($stream);

Mais la page ne s'affiche jamais, il y a donc surment une erreur mais je n'ai pas de retour donc auncun moyen de cibler l'erreur.

Avez vous une solution?

Merci d'avance
0
<?php 
$utilisateur = "test";
$sonpass = "test";
$varbash = "useradd ".$utilisateur." -p".$sonpassword." -m -k /etc/skel -s /bin/bash \n
passwd ".$sonpassword." \n
".$sonpassword." \n
".$sonpassword." \n
quotatool -u ".$utilisateur." -bq 599M -l '600 Mb' /home \n
mkdir /home/".$utilisateur."/www \n
chown -R ".$utilisateur." /home/".$utilisateur."/www \n
cd /home/".$utilisateur."/www \n
wget http://lesiteweb/heb/index.html \n
mysql -p \n
".$passroot." \n
CREATE USER ".$utilisateur."; SET PASSWORD FOR '".$utilisateur."'= PASSWORD('".$sonpassword."'); CREATE DATABASE `".$utilisateur."`; GRANT ALL PRIVILEGES ON `".$utilisateur."` . * TO '".$utilisateur."'; GRANT USAGE ON * . * TO '".$utilisateur."' IDENTIFIED BY '".$sonpassword."' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; \n
exit; \n
exit; \n";
// deux exite c'est normal une pour quitter sql l'autre pour close le pid ssh

$connection = ssh2_connect('ip', 22);
ssh2_auth_password($connection, 'root', 'lepass');
$stream = ssh2_exec($connection, $varbash);

?>

Essaye ca j'ai juste fait en sorte que tes variables passe correctement avec les double guillement.
Apres pour ce qui est des commandes j'ai pas verifié.
De plus, pense a mettre <?php car si tu peut avoir des probleme de compatibilite entre tes plateformes de prod. (Unix - linux)
0
Autre petite question. Comment fais tu pour que les \n soit considérés comme de "Entrée". Chez moi, ils sont considéré comme faisant partie de la commande et donc ca me renvoie une erreur de syntaxe :S
0
Utilisateur anonyme
24 oct. 2007 à 12:05
Je pense que tu devrais les faire une par une les commandes avec vérification qu'elles soit passées car d'après ce que je vois la premiere doit deja poser problème.
useradd ".$utilisateur." -p".$sonpassword." -m -k /etc/skel -s /bin/bash \n

Ici tu crée ton user
Je comprend pas pourquoi tu re-specifie ton password ensuite.
passwd ".$sonpassword." \n
".$sonpassword." \n
".$sonpassword." \n

Enfin je te préconiserais de vérifier ligne par ligne les commandes que tu fais car le serveur va surement pas apprecier de recevoir des commande éronné et surtout que ca va créer un profil qui ne sera peut etre pas complet. Car dans ce cas il faut que le detruise pour ne pas avoir de trou de securité.
0