|
| Brug output fra DOS-program via PHP Fra : Lasse Hedegaard |
Dato : 13-08-03 21:08 |
|
Heps!
Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
DOS), som giver noget output som jeg gerne vil vide på et website.
Programmet skal kaldes via PHP/Apache med nogle parametre, og giver
derefter noget output som skal sendes retur og bruger på websitet.
Hvordan ordner jeg det? Serveren er Apache 2.0.47 med PHP 5.0.0b1 på
Windows XP (skal dog senere overføres til en ældre maskine, højst
sandsynligt med Windows 98). Serveren er kun tilgængelig fra en enkelt
maskine (min egen), så sikkerheden er ikke hamrende vigtig.
Men hvordan klarer jeg det?
X-post: dk.edb.internet.webdesign.serverside.php,
dk.edb.internet.software.apache
FUT: dk.edb.internet.webdesign.serverside.php
Venligst,
Lasse Hedegaard
--
http://www.simlock.dk/ - låsesmeden til din simlock
| |
Lars Dybdahl (13-08-2003)
| Kommentar Fra : Lars Dybdahl |
Dato : 13-08-03 21:14 |
|
Lasse Hedegaard wrote:
> Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
> DOS), som giver noget output som jeg gerne vil vide på et website.
Uha - det er jo netop et af de områder, hvor Linux/Unix plejer at være
ekstrem stærk i sammenligning med Microsoft teknologier. Umiddelbart kan du
kigge efter, om popen() virker på Windows. Det tror jeg ikke den gør - men
så kan du alternativt bruge php under http://www.cygwin.com/. Her skulle
det virke med popen().
Lars.
--
Freelance programmør
Programmering mod timebetaling
| |
Lasse Hedegaard (13-08-2003)
| Kommentar Fra : Lasse Hedegaard |
Dato : 13-08-03 21:18 |
|
Lars Dybdahl skrev:
>Uha - det er jo netop et af de områder, hvor Linux/Unix plejer at være
>ekstrem stærk i sammenligning med Microsoft teknologier.
Desværre findes programmet ikke til Linux, heller ikke kildekoden (så
ville jeg lave en udgave direkte i PHP).
>Umiddelbart kan du
>kigge efter, om popen() virker på Windows. Det tror jeg ikke den gør - men
>så kan du alternativt bruge php under http://www.cygwin.com/. Her skulle
>det virke med popen().
Jeg vil prøve Runes forslag først
Venligst,
Lasse Hedegaard
--
http://www.simlock.dk/ - låsesmeden til din simlock
| |
Ronson (13-08-2003)
| Kommentar Fra : Ronson |
Dato : 13-08-03 21:18 |
| | |
Lasse Hedegaard (13-08-2003)
| Kommentar Fra : Lasse Hedegaard |
Dato : 13-08-03 22:08 |
|
Ronson skrev:
>Så er exec nok noget for dig
Yup, virker fint. Jeg valgte nu system i stedet, da jeg ellers ikke
får sidste linie med (?)
Meeen...
Jeg skal ændre lidt i outputtet inden det sendes til browseren (det
skal jo se pænt ud). Følgende virker ikke, det sender stadig outputtet
afsted med det samme:
$output = (system("hest.exe"));
Venligst,
Lasse Hedegaard
--
http://www.simlock.dk/ - låsesmeden til din simlock
| |
Bertel Lund Hansen (13-08-2003)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 13-08-03 22:30 |
|
Lasse Hedegaard skrev:
>Jeg skal ændre lidt i outputtet inden det sendes til browseren (det
>skal jo se pænt ud). Følgende virker ikke, det sender stadig outputtet
>afsted med det samme:
Måske er det for meget omvej, men du kan altid sende outputtet
til en fil som du læser og retter i bagefter.
????? = (system("hest.exe>output.txt"));
(eller hvordan det nu skal skrives).
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
JMo. (13-08-2003)
| Kommentar Fra : JMo. |
Dato : 13-08-03 22:31 |
| | |
Lasse Hedegaard (13-08-2003)
| Kommentar Fra : Lasse Hedegaard |
Dato : 13-08-03 22:58 |
|
JMo. skrev:
>Så brug noget output-buffering
Synes jeg ikke at kunne få til at virke - outputtet kommer med det
samme alligevel - men det kan være jeg gør det forkert.
Prøv at se her:
http://fergusons.dk/temp/output.gif
Bagerst: Browseren
Notesblok: Kilden (fra browseren)
Lister: Scriptet
Hvordan får jeg de linier jeg kan se i kilden ind i et array. Hvis det
kan lade sig gøre, så skulle jeg kunne komme videre...
Jeg har prøvet med
$array[] = ("time /?");
- det virker ikke... (jeg er nok træt).
Venligst,
Lasse Hedegaard
--
http://www.simlock.dk/ - låsesmeden til din simlock
| |
Morten Winkler Jørge~ (14-08-2003)
| Kommentar Fra : Morten Winkler Jørge~ |
Dato : 14-08-03 07:12 |
|
Lasse Hedegaard wrote:
> skal jo se pænt ud). Følgende virker ikke, det sender stadig outputtet
> afsted med det samme:
>
> $output = (system("hest.exe"));
Det er fordi system("hest.exe") bare sender output.fra hest.exe til stdout
for php (din webserver) mens exec returnerer dit hest.exe's output som en
streng.
Konklusion: Brug exec istedet og udtænk en måde at parse dit output på så du
kan formatere det pænt.
Morten
| |
Anders K. Madsen (13-08-2003)
| Kommentar Fra : Anders K. Madsen |
Dato : 13-08-03 21:43 |
|
On Wed, 13 Aug 2003 22:13:44 +0200
Lars Dybdahl <lars@dybdahl.dk> wrote:
> Lasse Hedegaard wrote:
> > Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
> > DOS), som giver noget output som jeg gerne vil vide på et website.
>
> Uha - det er jo netop et af de områder, hvor Linux/Unix plejer at være
> ekstrem stærk i sammenligning med Microsoft teknologier. Umiddelbart kan du
> kigge efter, om popen() virker på Windows. Det tror jeg ikke den gør - men
> så kan du alternativt bruge php under http://www.cygwin.com/. Her skulle
> det virke med popen().
>
Ehrm, nu bruger jeg selv Linux, men jeg har lidt svært ved at se hvordan Linux
kan være "ekstrem stærk" m.h.t. eksekvering af programmer gennem PHP...
Og hvad i alverden skulle manden dog bruge cygwin til? Hvis hans program kun
kører i DOS, så er der jo ikke så meget ved at have PHP liggende i cygwin.
Mvh.
Madsen
--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *
| |
Anders K. Madsen (13-08-2003)
| Kommentar Fra : Anders K. Madsen |
Dato : 13-08-03 23:29 |
|
On Wed, 13 Aug 2003 23:58:00 +0200
Lasse Hedegaard <laxxe@nospam.dk> wrote:
> Hvordan får jeg de linier jeg kan se i kilden ind i et array. Hvis det
> kan lade sig gøre, så skulle jeg kunne komme videre...
>
Du kunne måske tænke dig at kigge lidt på shell_exec(), som returnerer _al_
output fra et script.
http://dk2.php.net/manual/en/function.shell-exec.php
Eks.
<?php
$output = shell_exec("time /?");
// Nu skulle $output gerne indeholde outputtet fra 'time /?'.
// Smid hver linje ind i et array.
// (Er DOS-newline ikke '\r\n'?
$array = explode("\r\n", $output);
print '<pre>';
print_r($array);
print '</pre>';
?>
Håber det kører. :)
Mvh.
Madsen
--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *
| |
Lasse Hedegaard (13-08-2003)
| Kommentar Fra : Lasse Hedegaard |
Dato : 13-08-03 23:35 |
|
Anders K. Madsen skrev:
>Håber det kører. :)
Nu begynder det at ligne noget, men outputtet ser sådan ud (se
nederst)
(Det øverste og nederste er jo noget hø, hvor kommer det fra?)
I øvrigt, hvorfor kommer der ikke danske tegn med. Jeg har ikke brug
for det, men er blot nysgerrig.
OUTPUT:
Array
(
[0] => Viser eller definerer systemklokkesl‘ttet.
TIME [/T | tid]
Skriv TIME uden parametre for at vise det aktuelle systemklokkesl‘t og
f†
mulighed for at angive et nyt. Tryk p† Enter for at beholde
klokkesl‘ttet.
Hvis kommandoudvidelserne er aktiveret, underst›tter kommandoen
TIME parameteren /T, der fort‘ller kommandoen, at det aktuelle
klokkesl‘t skal v‘re output, uden at der skal sp›rges om et nyt
klokkesl‘t.
)
Venligst,
Lasse Hedegaard
--
http://www.simlock.dk/ - låsesmeden til din simlock
| |
Anders K. Madsen (13-08-2003)
| Kommentar Fra : Anders K. Madsen |
Dato : 13-08-03 23:40 |
|
On Thu, 14 Aug 2003 00:35:16 +0200
Lasse Hedegaard <laxxe@nospam.dk> wrote:
> Anders K. Madsen skrev:
>
> >Håber det kører. :)
>
> Nu begynder det at ligne noget, men outputtet ser sådan ud (se
> nederst)
>
> (Det øverste og nederste er jo noget hø, hvor kommer det fra?)
> I øvrigt, hvorfor kommer der ikke danske tegn med. Jeg har ikke brug
> for det, men er blot nysgerrig.
>
Hmm, prøv at erstatte "\r\n", med enten "\r" eller "\n" i explode().
Mvh.
Madsen
--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *
| |
Lasse Hedegaard (13-08-2003)
| Kommentar Fra : Lasse Hedegaard |
Dato : 13-08-03 23:44 |
|
Anders K. Madsen skrev:
>Hmm, prøv at erstatte "\r\n", med enten "\r" eller "\n" i explode().
\n gjorde tricket - nu spiller det... (men jo, \r\n er da newline i
DOS så vidt jeg husker).
Tak for hjælpen!
Venligst,
Lasse Hedegaard
--
http://www.simlock.dk/ - låsesmeden til din simlock
| |
Peter Brodersen (14-08-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 14-08-03 00:23 |
|
On Wed, 13 Aug 2003 22:08:22 +0200, Lasse Hedegaard <laxxe@nospam.dk>
wrote:
>Programmet skal kaldes via PHP/Apache med nogle parametre, og giver
>derefter noget output som skal sendes retur og bruger på websitet.
>
>Hvordan ordner jeg det?
Du ordner det, som du ellers vil kalde eksterne programmer i PHP. Fx:
<?php
$data = `dir /w "c:\Program Files\Apache Group\Apache\conf"`;
print "<pre>";
print $data;
print "</pre>";
?>
Læs evt. manualen:
http://dk.php.net/manual/en/language.operators.execution.php
og
http://dk.php.net/manual/en/ref.exec.php
--
- Peter Brodersen
Ugens sprogtip: udmærket (og ikke udemærket)
| |
Anders K. Madsen (14-08-2003)
| Kommentar Fra : Anders K. Madsen |
Dato : 14-08-03 00:37 |
|
On Thu, 14 Aug 2003 00:43:56 +0200
Lasse Hedegaard <laxxe@nospam.dk> wrote:
> Anders K. Madsen skrev:
>
> >Hmm, prøv at erstatte "\r\n", med enten "\r" eller "\n" i explode().
>
> \n gjorde tricket - nu spiller det... (men jo, \r\n er da newline i
> DOS så vidt jeg husker).
>
> Tak for hjælpen!
>
Det var så lidt.
Glad for jeg kunne hjælpe. :)
Mvh.
Madsen
--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *
| |
Søren Schimkat (14-08-2003)
| Kommentar Fra : Søren Schimkat |
Dato : 14-08-03 06:59 |
|
Hej Lasse
"Lasse Hedegaard" <laxxe@nospam.dk> skrev i en meddelelse
news:fa6ljvc0aoukbde6essfpgo6jd9rnucsga@news.tele.dk...
> Heps!
>
> Jeg har et DOS-program (kan dog kun køres under Windows, ikke "ren"
> DOS), som giver noget output som jeg gerne vil vide på et website.
>
> Programmet skal kaldes via PHP/Apache med nogle parametre, og giver
> derefter noget output som skal sendes retur og bruger på websitet.
>
> Hvordan ordner jeg det?
<?
exec ("program-name params", $output);
print $output;
?>
mvh Søren
www.serverforum.dk - her får du svar med garanti
> Serveren er Apache 2.0.47 med PHP 5.0.0b1 på
> Windows XP (skal dog senere overføres til en ældre maskine, højst
> sandsynligt med Windows 98). Serveren er kun tilgængelig fra en enkelt
> maskine (min egen), så sikkerheden er ikke hamrende vigtig.
>
> Men hvordan klarer jeg det?
>
> X-post: dk.edb.internet.webdesign.serverside.php,
> dk.edb.internet.software.apache
> FUT: dk.edb.internet.webdesign.serverside.php
>
> Venligst,
> Lasse Hedegaard
>
> --
> http://www.simlock.dk/ - låsesmeden til din simlock
| |
|
|