Page 1 sur 1
Programme interactif via SSH depuis PHP
Posté : 29 oct. 2009, 22:51
par Ranzal
Bonjour !
Je dois exécuter un programme interactif en mode texte sur un serveur distant depuis un autre serveur (web). Je me connecte à partir du serveur web au serveur distant à l'aide des fonctions de la bibliothèque PHP: SSH2.
J'arrive à exécuter le programme après m'être authentifié, mais le problème, c'est que ce programme est interactif : il attend mes réponses à ses questions (avec des scanf). D'où mon problème : comment lui envoyer mes réponses (il lit sur l'entrée standard) ?
Note : Les deux serveurs (cible avec le programme en question, et web) sont sous Linux.
Merci de m'éclairer...
Re: Programme interactif via SSH depuis PHP
Posté : 30 oct. 2009, 15:55
par mojorisin
Il te faut regarder du coté des fonctions stream
Flux avec php
Re: Programme interactif via SSH depuis PHP
Posté : 30 oct. 2009, 17:57
par Ranzal
Merci d'avoir répondu rapidement, je vais y jeter un oeil !
Re: Programme interactif via SSH depuis PHP
Posté : 04 nov. 2009, 23:01
par Ranzal
En fait, je ne comprends pas bien comment utiliser un streamWrapper...
D'après la doc, la classe est définie de base dans PHP, donc il n'y a rien à installer en plus.
Pourtant, quand j'appelle streamWrapper::stream_read(32), j'obtiens une erreur "Fatal error: Class 'streamWrapper' not found". J'obtiens la même erreur lorsque j'essaye de créer une instance de streamWrapper.
Il y a donc une pièce manquante au puzzle... faut-il inclure (ou importer) la classe dans mon fichier .php avant de pouvoir l'utiliser ? Y a-t-il autre chose qui m'échappe ?
Toute aide serait la bienvenue.
Re: Programme interactif via SSH depuis PHP
Posté : 05 nov. 2009, 11:09
par Hywan
Hey

,
C'est normal d'avoir une erreur car
streamWrapper n'existe pas, c'est un prototype. Ça aurait pu être une interface remarque …
En fait, c'est juste un mémo qui rassemble toutes les méthodes qui sont susceptibles d'être appelées sur un objet qui est enregistré comme
stream wrapper.
Tu n'es pas obligé de tout implémenter (mais c'est préférable si tu veux éviter des erreurs, ça dépend de ton implémentation).
La documentation le précise bien d'ailleurs :
Note: This is NOT a real class, only a prototype of how a class defining its own protocol should be.
Édition : d'ailleurs, les
stream wrappers n'ont pas de rapport avec ton problème. Pourquoi t'y intéresses-tu ?
Re: Programme interactif via SSH depuis PHP
Posté : 05 nov. 2009, 15:27
par Ranzal
Effectivement, je viens de résoudre mon problème. Il suffit de lire dans le flux avec fread() ou fgets(), et d'y écrire avec fwrite().
Je m'y intéressait car on m'a dit d'aller voir du côté des flux, et dans la doc des flux, je suis tombé sur des méthodes comme streamRead() qui me paraissaient adaptés.
Mais en fait, fgets() et fwrite() font très bien l'affaire.
Merci pour ces précisions sur les stream wrappers !
Re: Programme interactif via SSH depuis PHP
Posté : 05 nov. 2009, 15:47
par Hywan
Le système de flux de PHP est une vraie merveille

. Si tu mets le nez dedans, tu as du mal à en sortir

.