ptit_boy
jeudi 12 janvier 2006 à 09:54
Bonjour à tous,
je cherche à créer une page web PHP qui aille executer un script (shell par exemple) sur un serveur linux et qui m'affiche le résultat. Je suis un peu paumé au milieu des requêtes GET et autres et j'aimerais bien savoir comment on fait de façon simple ....
Merci
dièse
jeudi 12 janvier 2006 à 10:09
NorSeb
jeudi 12 janvier 2006 à 10:12
Bonjour,
Bienvenue sur le Hub
(Pas de présentation ?)Regarde du coté des fonction
exec() et
system()[edit]Dièse trop rapide

[/edit]
ptit_boy
jeudi 12 janvier 2006 à 10:30
Merci mais je croyais qu'exec ne fonctionnait qu'en local ? Moi ce que je veux faire c'est faire tourner la page PHP sur une machine A et cette page execute un script shell présente sur un serveur B. C'est donc pour ça que je me bat avec les requêtes GET.
dièse
jeudi 12 janvier 2006 à 11:09
Tout dépend de ce que tu veux faire. Si tu veux vraiment exécuter un script shell c'est un peu compliqué parce que la connexion sur le serveur distant nécessite une authentification. Par contre si tu peux faire en sorte que tes scripts soient écrits en PHP (et ce qui possible en shell est normalement possible en PHP

), alors là il n'y a plus aucun problème.
ptit_boy
jeudi 12 janvier 2006 à 11:27
Non ce que je veux faire n'est pas possible en PHP (mon script fait appel aux commandes HCI d'une pile Bluetooth) et de toute façon le serveur où est mon script shell n'a pas PHP.
L'authentification c'est pas trop un problème, j'ai les droits sur le serveur.
Merci,
Laurent
dièse
jeudi 12 janvier 2006 à 11:37
Personnellement, j'utilise un méthode d'authentification par clés publiques :
http://www.tuteurs.ens.fr/internet/loin/ssh.html#s1_2Mais il doit y avoir plus simple, attends peut-être l'avis d'une autre personne
Anonymus
jeudi 12 janvier 2006 à 13:31
Ce que tu veux faire est assez risqué. Laisser à une page distante l'accès à un script local peut avoir pour conséquences que n'importe qui pourra activer ce script.
En fonction du type de script que tu veux lancer sur la machine locale, tu peux utiliser une authentification par clé publique, pour créer un programme (en php ou autre ? ) sur la machine locale qui aura comme conséquences d'activer le script sur la machine locale. Il te suffit après d'appeler cette page, qui fera les vérifications nécessaires, et lancera le script.
ptit_boy
jeudi 12 janvier 2006 à 14:11
Pour le moment la sécurité c'est pas trop mon problème, je veux juste arriver à faire un truc qui fonctionne.
Est-ce que ça amrcherait un truc comme ça :
function getAuthentifiedPage($host,$service_uri,$username="",$password="",$method="GET")
{
$sock = fsockopen($host,80,$errno,$errstr);
if ($sock == FALSE) {
die("<br />Erreur de socket : <br />$errstr ($errno)<br />");
}
$body = "";
fputs($sock, "$method $service_uri HTTP/1.0\r\n");
if($username != "") {
fputs($sock, "Authorization: Basic ".base64_encode("$username:$password")."\r\n");
}
fputs($sock, "Host: $host\r\n");
fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($sock, "Accept: */*\r\n");
fputs($sock, "\r\n");
$headers = "";
while ($str = trim(fgets($sock, 4096))) {
$headers .= $str;
$headers .= -"\n";
}
while (!feof($sock)) {
$body .= fgets($sock, 4096);
}
fclose($sock);
return $body;
}
et un appel avec :
$host = "X.X.X.X";
$service_uri = "mon_script.sh";
$username = "xxx";
$password = "xxx";
$response_data = getAuthentifiedPage($host,$service_uri,$username,$password,$params,"GET");
Hein ?
Ca activerait mon script ?
Ou sinon oui je fais juste un appel à une page web sur mon serveur, qui appelle en local le script ....
On peut appeler des scripts locaux avec quoi comme langage ? Javascript c'est possible ?
ozmonitor
jeudi 12 janvier 2006 à 14:11
Effectivement, c'est très risqué.
Mais si vous insistez, la solution est la suivante :
1/ création d'un jeu de clef privé/public (entre les deux serveurs)
2/ mise en place d'un script sur le serveur distant
3/ mettre ceci dans la page php
exec ou system (ssh toto_AT_serveur_distant /opt/script.sh);
Bon courage.
ptit_boy
jeudi 12 janvier 2006 à 14:17
Ca va vous faire rire mais y a pas de pile SSH sur le serveur en question ....
ozmonitor
jeudi 12 janvier 2006 à 14:21
Il vaut mieux installer ssh, car faire cela en telnet/rexec est encore plus risqué !!!
ptit_boy
jeudi 12 janvier 2006 à 14:27
Je suis bien d'accord mais je choisis pas ce qu'il y a sur le serveur, c'est à prendre ou à laisser dans mon cas ... :nono:
Dan
jeudi 12 janvier 2006 à 14:31
CITATION(ptit_boy @ jeudi 12 janvier 2006, 14h27)
Je suis bien d'accord mais je choisis pas ce qu'il y a sur le serveur, c'est à prendre ou à laisser dans mon cas ... :nono:
CITATION(ptit_boy @ jeudi 12 janvier 2006, 11h27)
L'authentification c'est pas trop un problème, j'ai les droits sur le serveur.
Ou tu as les droits, ou tu ne les as pas

Avec les droits tu pourrais installer ssh, de manière à avoir un minimum de sécurité.
Dan
ptit_boy
jeudi 12 janvier 2006 à 14:33
J'ai tous les droits sur ce qu'il y a sur mon serveur de test, je peux toujours installer des trucs, mais ça m'avance pas parce que sur le serveur qui sera mis chez le client (c'est pour un boulot) je ne choisis pas ce qu'il y a. Et y a pas de SSH.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez
cliquer ici.