Jump to content
Sign in to follow this  
ptit_boy

Appel de script shell depuis une page PHP

Rate this topic

Recommended Posts

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Edited by dièse

Share this post


Link to post
Share on other 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

Edited by ptit_boy

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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 ?

Edited by ptit_boy

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...