Pages : 1
#1 Le 05/03/2008, à 21:38
- kneiss
libssh2 PHP, plusieurs commandes
Bonjour à tous,
Je souhaiterai vous demander un petite chose certainement facile, mais qui le devient assez compliquée quand on ne trouve pas là solution !
En effet, j'ai bien installé libssh2 et php5, tout fonctionne puisque mon script php qui envoi des commandes fonctionne très bien.
Je cherche à modifier le mot de passe d'un login avec la commande via la commande exec "passwd login", mais je n'arrive pas à répondre à la question que me pose le serveur... j'ai tout essayé mais rien n'y fait...
- Insérer une 2e commande exec avec le password...
- $stream = ssh2_exec($connection, 'passwd julien', 'test');
- $stream = ssh2_exec($connection, 'passwd julien && test');
Après celà, rien n'y fait !
En fait, j'aimerai répondre aux questions du serveur automatiquement avec mon script php dans le but d'une petite interface web.
Quelqu'un pourrait-il m'aider à modifier mon code php pour faire celà SVP ?
<?php
$connection = ssh2_connect('host', 22);
ssh2_auth_password($connection, 'login', '********');
$stream = ssh2_exec($connection, 'passwd login', 'test', 'test');
?>
Je vous remercie à tous par avance,
Cordialement,
Kneiss
Hors ligne
#2 Le 05/03/2008, à 22:12
- benbugohit
Re : libssh2 PHP, plusieurs commandes
vu sur http://theserverpages.com/php/manual/en … -shell.php :
<?php
$con=ssh2_connect('192.168.0.1', 22);
ssh2_auth_password($con, "user", "password");
$shell=ssh2_shell($con, 'xterm');
fwrite( $shell, "passwd login\n");
fwrite( $shell, "mdp courant\n");
fwrite( $shell, "test\n");
fwrite( $shell, "test\n");
?>
donc remplace par :
<?php
$con=ssh2_connect('192.168.0.1', 22);
ssh2_auth_password($con, "user", "password");
$shell=ssh2_shell($con, 'xterm');
fwrite( $shell, "cd /dir_one\n");
fwrite( $shell, "ls -la\n");
fwrite( $shell, "cd /dir_two\n");
fwrite( $shell, "ls -la\n");
?>
#### | - Sur un ordi depuis l'âge de 9 ans
(o_o) | - linuxien depuis 2002 (debian potato, mandrake 8, gentoo 2004.0,...)
..|~|.. | - ubuntu 10.10 sur Dell Vostro 1310
Hors ligne
#3 Le 05/03/2008, à 22:35
- kneiss
Re : libssh2 PHP, plusieurs commandes
Merci pour votre réponse rapide.
J'ai essayé votre script, mais mon mot de passe n'a pas changé en fait.
J'ai essayé en retirant également la ligne suivante:
fwrite( $shell, "mdp courant\n");
Ou en retirant le 'xterm', mais rien n'y fait :-(
PS: J'ai bien attribué les bons user password hostname et passwd login
Hors ligne
#4 Le 05/03/2008, à 22:46
- benbugohit
Re : libssh2 PHP, plusieurs commandes
j'avoue que je seche, et apparemment, cette extension ssh2 php est en constant développement, alors, essayez de "jouer" avec ssh2_fetch_stream et les sorties/entrées standard... ou voir si on peut le faire par le biais d'un script bash dans un premier temps...
#### | - Sur un ordi depuis l'âge de 9 ans
(o_o) | - linuxien depuis 2002 (debian potato, mandrake 8, gentoo 2004.0,...)
..|~|.. | - ubuntu 10.10 sur Dell Vostro 1310
Hors ligne
#5 Le 05/03/2008, à 23:00
- benbugohit
Re : libssh2 PHP, plusieurs commandes
alors la commande :
$stream = ssh2_exec($connection, 'echo login:mdp |chpasswd');
à exécuter en tant que root !
#### | - Sur un ordi depuis l'âge de 9 ans
(o_o) | - linuxien depuis 2002 (debian potato, mandrake 8, gentoo 2004.0,...)
..|~|.. | - ubuntu 10.10 sur Dell Vostro 1310
Hors ligne
#6 Le 06/03/2008, à 12:16
- kneiss
Re : libssh2 PHP, plusieurs commandes
J'ai essayé mais ça ne fonctionne pas non plus, pourtant j'ai bien la commande chpasswd sur ma Debian...
Hors ligne
#7 Le 06/03/2008, à 12:45
- benbugohit
Re : libssh2 PHP, plusieurs commandes
parce que cette commande doit etre faite en tant que root
#### | - Sur un ordi depuis l'âge de 9 ans
(o_o) | - linuxien depuis 2002 (debian potato, mandrake 8, gentoo 2004.0,...)
..|~|.. | - ubuntu 10.10 sur Dell Vostro 1310
Hors ligne
#8 Le 06/03/2008, à 17:13
- kneiss
Re : libssh2 PHP, plusieurs commandes
C'est impec benbugohit, merci !
Il me reste une dernière chose pour mon panel admin, ce serait de créer un compte...
En fait, j'ai essayé la commande suivante:
<?php
$connection = ssh2_connect('host', 22);
ssh2_auth_password($connection, 'login', '********');
$stream = ssh2_exec($connection, 'useradd -m -p password login');
?>
Cette commande fonctionne parfaitement bien, seulement useradd ne crypte pas les passwords.
Y'aurait-il un moyen de crypter les passwords comme la commande adduser avec une autre commande (adduser pose des questions, donc impossible je crois) ?
Merci d'avance !
Hors ligne
#9 Le 06/03/2008, à 17:20
- benbugohit
Re : libssh2 PHP, plusieurs commandes
et bien essaie de creer le user puis de faire le chpasswd comme precedemment apres
#### | - Sur un ordi depuis l'âge de 9 ans
(o_o) | - linuxien depuis 2002 (debian potato, mandrake 8, gentoo 2004.0,...)
..|~|.. | - ubuntu 10.10 sur Dell Vostro 1310
Hors ligne
#10 Le 06/03/2008, à 17:24
- kneiss
Re : libssh2 PHP, plusieurs commandes
Oui, c'est vrai après tout...
C'était au cas où une solution était possible, mais sinon c'est vrai que je peux tout à fait faire comme ça !
Hors ligne
#11 Le 07/03/2008, à 11:49
- kneiss
Re : libssh2 PHP, plusieurs commandes
Aurais-tu un moyen simple de pouvoir lancer plusieurs commandes en même temps ?
Je souhaite faire celà afin de changer automatiquement le mot de passe, après création du compte.
J'ai trouvé ce script, mais je ne le comprends pas trop...:
<?php
$ip = 'ip_address';
$user = 'username';
$pass = 'password';
$connection = ssh2_connection($ip);
ssh2_auth_password($connection,$user,$pass);
$shell = ssh2_shell($connection,"bash");
//Trick is in the start and end echos which can be executed in both *nix and windows systems.
//Do add 'cmd /C' to the start of $cmd if on a windows system.
$cmd = "echo '[start]';your commands here;echo '[end]'";
$output = user_exec($shell,$cmd);
fclose($shell);
function user_exec($shell,$cmd) {
fwrite($shell,$cmd . "\n");
$output = "";
$start = false;
$start_time = time();
$max_time = 2; //time in seconds
while(((time()-$start_time) < $max_time)) {
$line = fgets($shell);
if(!strstr($line,$cmd)) {
if(preg_match('/\[start\]/',$line)) {
$start = true;
}elseif(preg_match('/\[end\]/',$line)) {
return $output;
}elseif($start){
$output[] = $line;
}
}
}
}
?>
Serais-tu comment mettre donc 2 commandes l'une après l'autre ?
Merci d'avance
Dernière modification par kneiss (Le 07/03/2008, à 11:50)
Hors ligne
#12 Le 07/03/2008, à 12:06
- kneiss
Re : libssh2 PHP, plusieurs commandes
Eh bien en fait, j'ai trouvé solution à mon problème après une petite heure de recherche approfondie !
il suffit de separer par des ";" les commandes pour en faire plusieurs.
Merci encore à toi benbugohit, si tu ne m'avais pas aidé je serai encore à chercher mon script pour modifier un mot de passe
Hors ligne
#13 Le 27/08/2008, à 21:13
- roger guevara
Re : libssh2 PHP, plusieurs commandes
salut
pas si tu pourrais postear s'il te plaît(vous plaît) ta solution, déjà q j'ai à ce qu'il semble le même inconvénient et je ne trouve pas la sortie(départ)
discupen mon mauvais Français(français)
des saluts
Pages : 1