|
| Problemer med perl Fra : Michael Knudsen |
Dato : 10-10-04 20:28 |
|
Hej.
Jeg kunne, som det fremgår af en tidligere tråd, godt tænke mig at
afvikle java-programmer på min server. Jeg har prøvet med følgende:
Først har jeg lavet et simpelt java-program:
public class Test
{
public static void main (String args[])
{
System.out.println("Test!");
}
}
og dernæst har jeg lavet en cgi-fil:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
$a = "java Test";
$b = system ($a);
print $b;
Begge filer ligger placeret i /var/www/cgi-bin/.
Når jeg kører "perl test.cgi", får jeg:
[root@localhost cgi-bin]# perl test.cgi
Content-type: text/plain
Test!
men når jeg indlæser siden (test.cgi) i min browser, skriver den blot
-1. Hvad mon der går galt?
--
Michael Knudsen
| |
Kristian Thy (10-10-2004)
| Kommentar Fra : Kristian Thy |
Dato : 10-10-04 20:38 |
|
Michael Knudsen uttered:
> Når jeg kører "perl test.cgi", får jeg:
>
> [root@localhost cgi-bin]# perl test.cgi
> Content-type: text/plain
>
> Test!
>
> men når jeg indlæser siden (test.cgi) i min browser, skriver den blot
> -1. Hvad mon der går galt?
Dit perl-script skriver til stdout, og returnerer værdien -1 til din
browser. Du skal have fat i det der i perl svarer til php's passthru(),
men da jeg ikke kender noget til perl kan jeg desværre ikke være
behjælpelig der ;)
\\kristian
--
<URL: http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt>
<URL: http://home.att.net/~jbcole/humor/Microsoft_patents.htm>
| |
Michael Knudsen (10-10-2004)
| Kommentar Fra : Michael Knudsen |
Dato : 10-10-04 21:00 |
|
Kristian Thy wrote:
> Dit perl-script skriver til stdout, og returnerer værdien -1 til din
> browser. Du skal have fat i det der i perl svarer til php's passthru(),
> men da jeg ikke kender noget til perl kan jeg desværre ikke være
> behjælpelig der ;)
Det undrer mig bare, at den ene print-linje når frem til browseren, mens
den anden ikke gør.
--
Michael Knudsen
| |
Klaus Ellegaard (10-10-2004)
| Kommentar Fra : Klaus Ellegaard |
Dato : 10-10-04 20:59 |
|
Michael Knudsen <knudsen@imf.au.dk> writes:
>Det undrer mig bare, at den ene print-linje når frem til browseren, mens
>den anden ikke gør.
J2SE ("almindelig java") kræver sædvanligvis adgang til en grafisk
terminal for at fungere. Det har du næppe konfigureret for dit
CGI-script?
Mvh.
Klaus.
| |
Michael Knudsen (10-10-2004)
| Kommentar Fra : Michael Knudsen |
Dato : 10-10-04 21:04 |
|
Klaus Ellegaard wrote:
> J2SE ("almindelig java") kræver sædvanligvis adgang til en grafisk
> terminal for at fungere. Det har du næppe konfigureret for dit
> CGI-script?
Nej, desværre. Gad vide, om jeg kan stille noget op?
--
Michael Knudsen
| |
Klaus Ellegaard (10-10-2004)
| Kommentar Fra : Klaus Ellegaard |
Dato : 10-10-04 21:08 |
|
Michael Knudsen <knudsen@imf.au.dk> writes:
>> J2SE ("almindelig java") kræver sædvanligvis adgang til en grafisk
>> terminal for at fungere. Det har du næppe konfigureret for dit
>> CGI-script?
>
>Nej, desværre. Gad vide, om jeg kan stille noget op?
Den rigtige løsning er jo at bruge J2EE. Det er designet til
at køre i web-miljøer. Til gengæld er det også ret bøvlet at
kode småting til - og ret system-krævende. Især hvis man bare
skal lege.
Hvis vi snakker et legesystem, kan du altid tillade, at det
pågældende script får adgang til en X-server. Du kan starte
programmet med "DISPLAY=10.20.30.40:0 java blahblah", hvor
IP-adressen er din arbejdsstation (forudsat at der ikke er
nogen firewalls eller lignende i vejen).
Det vil som regel også kræve, at du fra din arbejdsstation
tillader webserverens IP at snakke X: "xhost +10.20.30.50".
Det er sikkerhedsmæssigt ret skidt, for det tillader jo alle
på din webserver at åbne vinduer på din desktop. Bliver web-
serveren hacket, kunne der ske "spændende" ting. Men igen:
til leg er det sikkert fint nok. Især hvis det er én og samme
maskine.
Mvh.
Klaus.
| |
Jacob Bunk Nielsen (11-10-2004)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 11-10-04 09:56 |
|
Michael Knudsen <knudsen@imf.au.dk> writes:
> Klaus Ellegaard wrote:
>
>> J2SE ("almindelig java") kræver sædvanligvis adgang til en grafisk
>> terminal for at fungere. Det har du næppe konfigureret for dit
>> CGI-script?
>
> Nej, desværre. Gad vide, om jeg kan stille noget op?
Hvis du bruger Java 1.4.2 (eller nyere) kan du bruge headless support.
Se
< http://java.sun.com/j2se/1.4.2/docs/guide/awt/AWTChanges.html#headless>.
--
Jacob - www.bunk.cc
If you can't understand it, it is intuitively obvious.
| |
Thorbjoern Ravn Ande~ (10-10-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 10-10-04 21:18 |
|
Michael Knudsen <knudsen@imf.au.dk> writes:
> men når jeg indlæser siden (test.cgi) i min browser, skriver den blot
> -1. Hvad mon der går galt?
Prøv med en absolut sti til java.
Herudover vil du nok opdage at det tager så lang tid at køre din
kommando, at du nok ikke vil gå i drift med det. Det tager
laaaaaaaaang tid at start en JVM op (hvilket mulighvis er bedre i
1.5).
Du skal finde en måde, så JVM'en kører hele tiden.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Michael Knudsen (10-10-2004)
| Kommentar Fra : Michael Knudsen |
Dato : 10-10-04 21:31 |
|
Thorbjoern Ravn Andersen wrote:
> Prøv med en absolut sti til java.
Snedigt! Det var lige det, der skulle til. Nu mangler jeg bare at finde
ud af, hvorfor der bliver tiføjet et 0 til sidst. Det ser mystisk ud...
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<H1>Hello World</H1>\n";
$a = system ("/usr/java/j2sdk1.4.2_05/bin/java Test");
print $a;
Giver følgende output i browseren:
Hello World
Test! 0
--
Michael Knudsen
| |
Kristian Thy (10-10-2004)
| Kommentar Fra : Kristian Thy |
Dato : 10-10-04 22:21 |
|
Michael Knudsen uttered:
> Snedigt! Det var lige det, der skulle til. Nu mangler jeg bare at finde
> ud af, hvorfor der bliver tiføjet et 0 til sidst. Det ser mystisk ud...
>
> #!/usr/bin/perl
> print "Content-type: text/html\n\n";
> print "<H1>Hello World</H1>\n";
> $a = system ("/usr/java/j2sdk1.4.2_05/bin/java Test");
> print $a;
>
> Giver følgende output i browseren:
>
> Hello World
> Test! 0
Mit bud: system(...) udskriver "Hello World\nTest!" og lægger
exitværdien 0 (udført uden fejl) ind i $a, som du derefter printer.
Er der nogen grund til at du ikke kører en Tomcatserver på din maskine?
Det er da 100 gange nemmere end at tæske det gennem perl
\\kristian
--
<URL: http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt>
<URL: http://home.att.net/~jbcole/humor/Microsoft_patents.htm>
| |
Jesper Hansen (10-10-2004)
| Kommentar Fra : Jesper Hansen |
Dato : 10-10-04 23:11 |
|
> Er der nogen grund til at du ikke kører en Tomcatserver på din maskine?
> Det er da 100 gange nemmere end at tæske det gennem perl
*host* han kan ikke finde ud af det *host*
| |
Michael Knudsen (11-10-2004)
| Kommentar Fra : Michael Knudsen |
Dato : 11-10-04 06:48 |
|
Jesper Hansen wrote:
> *host* han kan ikke finde ud af det *host*
Grrrr ... du ved godt, at det er dit job at løse sådan nogle problemer
for mig
--
Michael
| |
Thomas S. Iversen (11-10-2004)
| Kommentar Fra : Thomas S. Iversen |
Dato : 11-10-04 07:35 |
|
On 2004-10-11, Michael Knudsen <knudsen@imf.au.dk> wrote:
>> *host* han kan ikke finde ud af det *host*
>
> Grrrr ... du ved godt, at det er dit job at løse sådan nogle problemer
> for mig
Gerne, men det koster
Thomas
| |
Jesper Hansen (11-10-2004)
| Kommentar Fra : Jesper Hansen |
Dato : 11-10-04 09:24 |
|
Thomas S. Iversen wrote:
> On 2004-10-11, Michael Knudsen <knudsen@imf.au.dk> wrote:
>
>
>>>*host* han kan ikke finde ud af det *host*
>>
>>Grrrr ... du ved godt, at det er dit job at løse sådan nogle problemer
>>for mig
>
>
> Gerne, men det koster
næmli'
| |
Thorbjoern Ravn Ande~ (11-10-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 11-10-04 04:22 |
|
Michael Knudsen <knudsen@imf.au.dk> writes:
> Snedigt! Det var lige det, der skulle til. Nu mangler jeg bare at
> finde ud af, hvorfor der bliver tiføjet et 0 til sidst. Det ser
Du udskriver $a. Læs på hvad "system" returnerer.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Kim Hansen (10-10-2004)
| Kommentar Fra : Kim Hansen |
Dato : 10-10-04 22:12 |
|
Michael Knudsen <knudsen@imf.au.dk> writes:
> og dernæst har jeg lavet en cgi-fil:
>
> #!/usr/bin/perl
> print "Content-type: text/plain\n\n";
> $a = "java Test";
> $b = system ($a);
> print $b;
$b kommer ikke til at indeholde det som java-programmet skriver, men
exit-status fra system-kaldet. Du har brug for qx// som er beskrevet i
perlop.
Læs om det i 'perldoc -f system', især afsnit 3.
--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Vadgårdsvej 3, 2.tv. | /,`.-´` -. ;:-. | Jeopardy.
2860 Søborg | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Tlf: 39 56 24 37 | '---''(_/--' `-'\_) | spørgsmålet.
| |
Thomas S. Iversen (10-10-2004)
| Kommentar Fra : Thomas S. Iversen |
Dato : 10-10-04 23:26 |
|
On 2004-10-10, Michael Knudsen <knudsen@imf.au.dk> wrote:
> $b = system ($a);
> print $b;
> men når jeg indlæser siden (test.cgi) i min browser, skriver den blot
> -1. Hvad mon der går galt?
Du får returværdien af udførelsen af javaprogrammet. Også kaldet exit koden.
Dvs. du får at vide om programmet har termineret korrekt eller ej. Faktisk
ikke helt. Du skal så vidt jeg husker lige dividere med 256 før du får den
rigtige returværdi, men det er altså returværdien og ikke andet du står med
efter en system($a).
man perl er et godt sted at starte. Ligeså er o'reileys bøger.
Thomas
| |
|
|