| 1 KnightDogg, le 18 oct 2006 à 16:33:35La fonction PHP "exec" te permet de lancer une commande, et en paramètre tu lui passes la commande à exécuter:
exec($sCmde);
La commande que tu passes en paramètre à cette fonction, tu la construis:
$sCmdeDist = "rm /tmp/*"; // commande distante, i.e. commande qui va s'exécuter sur ta machine distante, identifiée par son nom ou son adresse IP, que tu stockes dans la constante HOST, définie dans un fichier de conf par exemple; ici, la commande que tu vas lancer sur HOST, va supprimer tous les fichiers qui se trouvent dans le répertoire /tmp de HOST
$sCmde = "ssh ".HOST." ".$sCmdeDist;
Essaye donc cela. Répondre à KnightDogg | 2 marie, le 18 oct 2006 à 16:40:07J ai deja essayer,
seulement voila, je suis en utilisateur apache lorsque
j execute mon script php,
et je n ai pas les cles pour apache, et d'ailleurs
je n ai pas d 'utilisateur apache sur le poste
surlequel je fais le SSH,
lorsque je test ce que tu me proposes,
je n ai pas d erreur, mais rien ne s execute Répondre à marie | 3 KnightDogg, le 18 oct 2006 à 16:52:35Il faut alors que tu spécifies l'utilisateur pour lequel une clef a été générée de cette façon:
$sCmde = "ssh ".USER."@".HOST." ".$sCmdeDist;
par ex: $sCmde = "ssh marie@domain.com rm /tmp/*";
=> tu vas te connecter sur domain.com en tant qu'utilisateur marie, et si cet utilisateur a les droits sur le répertoire /tmp de domain.com, alors les fichiers qu'il contient seront supprimés.
Mais tu peux dans un premier temps tester ta commande distante en ligne de commande, avant de l'exécuter via un script PHP, avec un PuTTy par exemple. Répondre à KnightDogg | 4 marie, le 18 oct 2006 à 17:09:12Voici exactement la commande que je fais,
je sais c'est en root, mais bon si deja ca fonctionne
comme ca c'est deja bien,
$command1 = 'ssh root@192.168.0.106 mkdir /home/marie';
exec($command1);
j'appelle mon script php, mais ne se passe, le repertoire n'est pas crée
en ligne de commande dans une console ca fonctionne, Répondre à marie | 5 KnightDogg, le 18 oct 2006 à 17:17:51Vérifie que le safe_mode n'est pas activé. Car si c'est le cas, seules les programmes situées dans le dossier défini par safe_mode_exec_dir sont exécutables ainsi.
Si tu as les droits suffisants, tu peux également essayer de désactiver le safe_mode, pour vérifier qu'il s'agit bien de la source du problème.
Sinon, si le safe_mode n'est pas activé, alors essaye de remplacer la commande "exec", par "shell_exec": cette fonction te retourne une chaine qui correspond au retour. Tu peux même essayer "system", avec un 2eme paramètre optionnel qui stockera le résultat de l'exécution ( a priori un entier type 0 ou 1 qui t'indique si l'exécution a échoué ou réussi), et cette fonction te retourne également une chaîne que tu peux afficher... Répondre à KnightDogg | 6 marie, le 18 oct 2006 à 17:47:24Le safe mode est a off,
shell_exect en fontionne pas,
j ai essayer system et il me renvoie 255 dans le deuxieme
parametre,
je vais essayer de voir ce que ca veut dire ... Répondre à marie |
| 7 marie, le 19 oct 2006 à 10:03:04Bon,
pour finir j ai genere les cles en tant que apache sur mon serveur,
je les ai mis au bon endroit sur le serveur distant,
et la lorsque j'appel ma page php, ca fonctionne,
mes commandes sont bien executer,
merci pour votre aide Répondre à marie | 12 boubacach, le 3 déc 2007 à 10:38:50Bonjour, serait-il possible que vous m'indiquiez comment générer un couple clé publique/privée avec l'utilisateur apache. Je n'arrive pas a me connecter avec cet utilisateur. Il me demande un mot de passe alors que je ne lui en ait pas donné ? y a t-il un mot de passe par défaut à l'intallation ?
merci Répondre à boubacach |
|
|
|
|
|
|