Page 1 sur 2
ssh2_exec et mkdir ??
Posté : 23 août 2008, 22:58
par the_grinch
Bonjour,
J'ai un dédié avec debian 4.0, php5, apache2 et la libssh2 et ssh2 installé dessus.
Je voudrais créer un dossier grace a un fichier php donc voici mon code :
<?php
$connection = ssh2_connect('mon_ip', 22);
if (ssh2_auth_password($connection, 'sab', 'sab'))
{
echo "Connection etablie !";
$stream = ssh2_exec($connection, 'mkdir /home/sab/aze');
}
else
{
echo "Authentication Failed...";
}
?>
La connection est établie mais le dossier ne se crée pas.
C'est du a quoi ?
Merci !!
Posté : 23 août 2008, 23:16
par Sékiltoyai
Tu as essayé d'exécuter la commande en te connectant directement ?
Que te renvoie la fonction ssh2_exec() ?
Si elle ne te renvoie pas FALSE, elle est censé te renvoyer une ressource, tu as essayé de récupérer les flux STDERR et STDOUT avec la fonction ssh2_ fetch_ stream() et de lire ces flux avec fread() ?
Que de questions sans réponse…

Posté : 24 août 2008, 00:22
par the_grinch
Tu as essayé d'exécuter la commande en te connectant directement ?
Que te renvoie la fonction ssh2_exec() ?
Si elle ne te renvoie pas FALSE, elle est censé te renvoyer une ressource, tu as essayé de récupérer les flux STDERR et STDOUT avec la fonction ssh2_ fetch_ stream() et de lire ces flux avec fread() ?
Que de questions sans réponse…

Bien sur, en me connectant directement, ça crée bien le dossier aze.
Je verrais demain ce que me renvoie la fonction.
Je n'ai pas essayé de récupérer le flux STDERR ni STDOUT car je ne sais pas ce que c'est ( ça sera bientot fait ^^ ).
Je ferais tout ça demain et je te dirais.
Posté : 24 août 2008, 01:06
par Sékiltoyai
Je ferais tout ça demain et je te dirais.
Très bien, bonne nuit

Posté : 24 août 2008, 19:36
par the_grinch
<?php
$connection = ssh2_connect('mon_ip', 22);
if (ssh2_auth_password($connection, 'sab', 'sab'))
{
echo "Connection etablie !<br><br>";
if (ssh2_exec($connection, 'mkdir /home/sab/aze'))
{
echo "ssh2_exec oki !<br>";
}
else
{
echo "ssh2_exec echec<br>";
}
}
else
{
echo "Authentication Failed...<br>";
}
?>
M'affiche :
Donc ça fonctionne mais toujours pas de dossier en vu ...
Je ne sais pas comment récuprer les fluxs STDERR et STDOUT... :s
J'ai recherché sur google mais je trouve pas ou alors j'y comprends rien.
Posté : 24 août 2008, 19:52
par Sékiltoyai
Bon, c'est bon signe, tu peux récupérer la sortie au moins.
Tu aurais dû lire la
documentation. Fais la même chose que dans l'exemple (en travaillant avec ssh2_exec() plutôt que ssh2_shell()).
Et lis le flux que tu récupères avec un fread()…
Posté : 24 août 2008, 20:03
par the_grinch
Oki , j'ai fais ceci :
<?php
$connection = ssh2_connect('crocamis.fr', 22);
if (ssh2_auth_password($connection, 'sab', 'sab'))
{
echo "Connection etablie !<br><br>";
if (ssh2_exec($connection, 'mkdir /home/sab/aze'))
{
echo "ssh2_exec oki !<br>";
$varcommandessh = ssh2_exec($connection, 'mkdir /home/sab/aze');
$handle = ssh2_fetch_stream($varcommandessh, SSH2_STREAM_STDERR);
if ($handle)
{
echo "ssh2_fetch_stream OK";
$varfread = fread($handle, 8192);
echo $varfread;
}
else
{
echo "pas de ssh2_fetch_stream";
}
}
else
{
echo "ssh2_exec echec<br>";
}
}
else
{
echo "Authentication Failed...<br>";
}
?>
ça me retourne :
Posté : 24 août 2008, 20:11
par Sékiltoyai
Comme je te disais tu dois lire le flux retourné avec fread. Et fais le aussi pour STDIO… Avec cela tu auras le retour de la commande…
Posté : 24 août 2008, 20:12
par the_grinch
J'ai fais fread() mais il ne me retourne rien. ( code dans mon précédent post )
Posté : 24 août 2008, 20:34
par Sékiltoyai
Ok, et la même chose avec STDIO ?
Posté : 24 août 2008, 21:39
par the_grinch
En remplaçant :SSH2_STREAM_STDERR par SSH2_STREAM_STDIO
De même, rien a part :
$handle = ssh2_fetch_stream($varcommandessh, SSH2_STREAM_STDIO);
if ($handle)
{
echo "ssh2_fetch_stream OK";
$varfread = fread($handle, 8192);
echo $varfread;
Posté : 24 août 2008, 21:43
par Sékiltoyai
C'est spé…
Là je ne vois pas… Théoriquement il devrait y avoir un message d'erreur dans l'une des deux sorties… Peut être un problème de droits, de dossier parent inexistant, ou ce genre de choses, sinon, je ne vois pas…
Posté : 24 août 2008, 21:47
par the_grinch
Ahhhhhh quel con je suis !!!!
Désolé de t'avoir fait perdre ton temps Sékiltoyai, mais au moins je saurais quoi faire la prochaine fois.
En fait c'est que j'ai suPHP aussi pour gérer les sites de mes membres, ( et leur accés FTP )
Et j'ai testé avec un membre qui n'avais pas d'accès shell ( /bin/false ) et je viens de m'en rendre compte.
ça fonctionne parfaitement maintenant, ( je lui ai donné /bin/bash )
Merci encore et encore désolé mais c'est bisarre qu'il n'a pas envoyé d'erreur.
Posté : 24 août 2008, 21:50
par Sékiltoyai
Ca arrive

Apprends tout de même à lire la documentation, même lorsqu'elle n'est pas exhaustive, à lire entre les lignes…
Posté : 24 août 2008, 21:57
par the_grinch
Oui, c'est ce que je vais faire =) et plus me renseigner sur ce que tu m'as dis ( si ce n'est pas a cause de mon oubli de shell )
Merci encore !