[PHP] system() en interactiviteit

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil met php eigenlijk 'interactief' communiceren met een systeemcommando. Ik heb een perl script geschreven die inlogt met ssh op een andere server. Nu wil ik met php dat perlscript aansturen. Opzich kan dit wel met system(). Alleen moet ik telkens bij elk commando die ik wil uitvoeren steeds weer system() uitvoeren, en dus steeds moet er weer een nieuwe ssh sessie worden gemaakt. Dit duurt behoorlijk lang als je bv 5 of 6 commando's achter elkaar wil uitvoeren welke dynamische worden gegenereerd aan de hand van de output van een vorrige commando.

Mijn vraag is of iemand een methode weet om met php dus een interactieve 'sessie' te hebben met een programma/perl script...

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Kijk eens naar popen, kun je een pipe mee openen naar een script en dat dan aansturen met fread en fwrite :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kom ook daar er niet helemaal mee uit. Ik doe nu dit:

PHP:
1
$fp = popen('/local/scripts/cmd.pl','r');


Met
PHP:
1
echo fread($fp,1024);

Krijg ik al gelijk iets geks, normaal als je cmd.pl uitvoerd krijg je dit te zien:
code:
1
gebruikersnaam:

Dan moet je je gebruikersnaam invullen en dan krijg je de volgende vraag voor het wachtwoord. Maar met bovenstaande code krijg ik al gelijk dit te zien:

code:
1
2
gebruikersnaam:
wachtwoord:

En als ik met
PHP:
1
fputs($fp,"test\n");

doe, heb ik ook niet het idee dat dit daadwerkelijk bij cmd.pl aankomt...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb zowel fwrite() als fputs() getest

Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

Voor interactief werken met een proces is proc_open beschikbaar. Hierbij kun je zowel input- als output- en error-streams krijgen.