Aller au contenu

Appel de script shell depuis une page PHP


ptit_boy

Sujets conseillés

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 .... :blush:

Merci :D

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par dièse
Lien vers le commentaire
Partager sur d’autres sites

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é par ptit_boy
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par ptit_boy
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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:

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...