ptit_boy Posté 12 Janvier 2006 Posté 12 Janvier 2006 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 Posté 12 Janvier 2006 Posté 12 Janvier 2006 Bonjour, Tu peux utiliser la fonction exec : http://www.nexen.net/docs/php/annotee/function.exec.php
NorSeb Posté 12 Janvier 2006 Posté 12 Janvier 2006 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 Posté 12 Janvier 2006 Auteur Posté 12 Janvier 2006 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 Posté 12 Janvier 2006 Posté 12 Janvier 2006 (modifié) 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. Modifié 12 Janvier 2006 par dièse
ptit_boy Posté 12 Janvier 2006 Auteur Posté 12 Janvier 2006 (modifié) 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 Modifié 12 Janvier 2006 par ptit_boy
dièse Posté 12 Janvier 2006 Posté 12 Janvier 2006 Personnellement, j'utilise un méthode d'authentification par clés publiques : http://www.tuteurs.ens.fr/internet/loin/ssh.html#s1_2 Mais il doit y avoir plus simple, attends peut-être l'avis d'une autre personne
Anonymus Posté 12 Janvier 2006 Posté 12 Janvier 2006 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 Posté 12 Janvier 2006 Auteur Posté 12 Janvier 2006 (modifié) 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 ? Modifié 12 Janvier 2006 par ptit_boy
ozmonitor Posté 12 Janvier 2006 Posté 12 Janvier 2006 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 Posté 12 Janvier 2006 Auteur Posté 12 Janvier 2006 Ca va vous faire rire mais y a pas de pile SSH sur le serveur en question ....
ozmonitor Posté 12 Janvier 2006 Posté 12 Janvier 2006 Il vaut mieux installer ssh, car faire cela en telnet/rexec est encore plus risqué !!!
ptit_boy Posté 12 Janvier 2006 Auteur Posté 12 Janvier 2006 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 ...
Dan Posté 12 Janvier 2006 Posté 12 Janvier 2006 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 ... 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 Posté 12 Janvier 2006 Auteur Posté 12 Janvier 2006 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant