Page 1 sur 1

exec (scp ) est ce possible?

Posté : 24 janv. 2006, 18:34
par funzyrip
bonjour à vous,

j'ai 2 problèmes :

1) je voudrai lancer une commande externe, la commande scp :
/usr/bin/scp -rp $fin[$i] [email protected]:/home/restore"

cette commande copie le fichier représenté par la valeur du tableau $fin[$i] vers un autre poste en réseau (je précise que je tourne sous linux et que lorsque je lance cette commande directement elle fonctionne)
voila le code que j'essai d'utiliser
for($i=0;$i<=$total;$i++) {
exec ("/usr/bin/scp -rp $fin[$i] [email protected]:/home/restore");
echo "<br /> $fin[$i]";}
j'ai aussi essayé en remplaçant la commande exec par shell_exec , system , passthru
sans succès... Il n'y a pas de message d'erreur, c'est juste que les fichiers ne sont pas copiés.
Je n'ai pas de grandes connaissances en php, copier des fichiers par scp via php est ce possible?? ou faut-il utiliser des commandes spéciales comme ssh2_connect et ssh2_scp_send (que j'ai essayé aussi mais sans doute mal écrites)???

2) je me suis enregistré, j'ai bien recu un mail de confirmation et j'ai été sur l'url d'activation mais je n'arrive pas à me connecter :
Vous avez spécifié un nom d'utilisateur incorrect ou inactif ou un mot de passe invalide
mais si je tente de poster dans le forum avec mon login :
Désolé, mais ce nom d'utilisateur est déjà pris.
voici mon login: funzy.rip
et mon mail : [email protected]

ce n'est peut etre pas la place de ce 2eme probleme dans le forum mais je ne savai pas ou le mettre...

merci d'avance

Posté : 25 janv. 2006, 11:48
par Maitrepylos
que donne
echo "<br /> $fin[$i]"

Posté : 25 janv. 2006, 12:34
par funzyrip
 echo "<br /> $fin[$i]"; 
me donne le chemin des fichiers à copiés, par exemple:
/mnt/sauve/gds/backup/heure/08h--24-01-2006/timer

je cherche mais bon... j'ai vu qu'il y a avait aussi les commandes
#$connection = ssh2_connect('shell.example.com', 22);
#ssh2_auth_password
#ssh2_scp_send
qui pourraient me servir aussi... Mais je dois installer certains modules à php. Je suis cette explication http://php.rinet.ru/manual/fr/ref.ssh2.php
mais l'installation plante un peu de partout... Donc si je pouvai y arriver directement avec un shell_exec(scp) ca m'arrangerait bien :)[/php]

Posté : 25 janv. 2006, 12:37
par Maitrepylos
Cela te donne le chemin à copié ou le fichier à copier?

Posté : 25 janv. 2006, 13:00
par funzyrip
je reprend l'exemple : ça me donne l'endroit ou se trouve le fichier timer
/mnt/sauve/gds/backup/heure/08h--24-01-2006/timer

comme ca y a le chemin pour y arriver et le nom du ficher à copié

Posté : 25 janv. 2006, 14:07
par Maitrepylos
et donc $fin est un tableau qui à déja lu le répertoire en question?

Posté : 25 janv. 2006, 14:36
par Maitrepylos
Question as-tu régler les problèmes de password ssh entre les deux machines via des key-ssh?

Posté : 25 janv. 2006, 14:37
par funzyrip
oui oui j'ai créé une clé et ca me permet de me connecter et copier des fichiers sans demande de mot de passe

Posté : 25 janv. 2006, 15:07
par Maitrepylos
Salut,

je viens de faire le test.
<?php
exec("/usr/bin/scp -rp /Dossier/xorg.conf [email protected]:/home/"); 
?>
Et effectivement si je fais fonctionner ce fichier en Cgi, il n'y a pas de problèmes, par contre en mode Web, ça passe pas, peut-être voir du côté du safe-mode.

Bonne chance

Posté : 25 janv. 2006, 16:33
par funzyrip
en fait je n'ai pas du bien régler l'histoire de key_ssh

puisque si je lance apache, que je tente d'envoyer 3 fichiers par shell_exec(scp .. [email protected] )

le serveur affiche 3 fois ce message:

The authenticity of host '172.25.56.2 (172.25.56.2)' can't be established.
RSA key fingerprint is 70:97:fa:fa:e3:07:b6:7f:b6:90:ae:7d:eb:bf:2f:56.
Are you sure you want to continue connecting (yes/no)?


comment puis je régler cette histoire de key_ssh??
surtout que si je lance ssh 172.25.56.2 depuis mon terminal, la connection s'effectue sans problème puisque j'avais déja mis des clés ssh entre les postes! Faut-il faire autre chose pour un serveur apache?

Posté : 25 janv. 2006, 16:40
par Maitrepylos
Il te demande juste si tu es d'accord d'utiliser cette méthode à l'avenir, réponds yes la première fois, puis normalement ce sera bon.

Posté : 25 janv. 2006, 16:56
par funzyrip
oui mais si je met yes ça fai ça (sur le serveur, pas sur la page) :
y
y
y
y
y
y
y
y
y
y
y
y
y
y
et du coup je l'arrète....
peut etre ca viendrai de la boucle for ou j'ai mis la commande :
<?php 
$fin=$_POST['tablo'];
$total=count($fin);
for($i=0;$i<=$total;$i++) {
shell_exec("/usr/bin/scp -rp $fin[$i] [email protected]:/home/restore");
echo "<br /> $fin[$i]";
}
echo "Restauration terminée!";
?>

Posté : 25 janv. 2006, 17:07
par Maitrepylos
oui esaye la première fois sans la boucle

Posté : 25 janv. 2006, 17:11
par funzyrip
sans la boucle c'est la meme chose
défilé de y
y
y
y
du coup ca doit venir de la configuration d'apache et pas du php?[/code]