/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
system() virker ikke på windows 2003 serve~
Fra : Bo Overgaard


Dato : 22-09-04 17:43

Hej

Jeg har et lille perl script der skal afvikles som cgi på en windows 2003
server dåse.
Kort fortalt har jeg brug for at lave et system kald og genne resultatet på
filsystemet. Det virker på cmd men ikke gennem iis'en..

det ser nogenlunde sådan ud
#!/usr/perl/bin
system("echo davs med dig > test.txt");


er der nogen der kan hjælpe?

mvh
Bo





 
 
Lars Kim Lund (22-09-2004)
Kommentar
Fra : Lars Kim Lund


Dato : 22-09-04 16:50

"Bo Overgaard" <boo@hotmail.com> wrote:

>Jeg har et lille perl script der skal afvikles som cgi på en windows 2003
>server dåse.
>Kort fortalt har jeg brug for at lave et system kald og genne resultatet på
>filsystemet. Det virker på cmd men ikke gennem iis'en..
>
>det ser nogenlunde sådan ud
>#!/usr/perl/bin
>system("echo davs med dig > test.txt");
>
>er der nogen der kan hjælpe?

Får du nogen fejl i loggen?

Anyway, det kan være flere ting. Det ene er at IIS'en (eller scriptet)
ikke har rettigheder til at eksekverer programmer. Det andet kunne
være at du bare skriver echo. Echo er en intern funktion i
kommandofortolkeren og du er nødt til at kalde den via den, hvis du
ikke er i en prompt.

prøv med <fuld path til cmd.exe>\cmd.exe /c echo davs med dig.
Alternativt kan du bruge %comspec% /c, men det kræver at perl kan
opløse variablen. (jeg har ikke testet).

--
Lars Kim Lund
http://www.net-faq.dk/

Bo Overgaard (22-09-2004)
Kommentar
Fra : Bo Overgaard


Dato : 22-09-04 20:13

Hej Lars
> Får du nogen fejl i loggen?

Nej, den ser fin ud - jeg går ud fra at det er iis-loggen du har i tankerne

> Anyway, det kan være flere ting. Det ene er at IIS'en (eller scriptet)
> ikke har rettigheder til at eksekverer programmer.

I min cgi-bin har jeg flere andre pelrscripts der eksekvere externe
programmer. Men det er alle binaere "programmer" - kan man sige det. Jeg kan
bare ikke kalde system komandoer dirrekte.

eksempel følger:
Virker ikke:
system("echo davs med dig > test.txt");

Virker ikke:
system("dir > dir.txt");

Virker ikke:
system("mitprogram.exe -out outputfile.txt ");

Hvor mitprogram.exe aflever en outputfil på filsystemet.

Håber det kan indblik i mit problem...


> Det andet kunne
> være at du bare skriver echo. Echo er en intern funktion i
> kommandofortolkeren og du er nødt til at kalde den via den, hvis du
> ikke er i en prompt.
>
> prøv med <fuld path til cmd.exe>\cmd.exe /c echo davs med dig.
> Alternativt kan du bruge %comspec% /c, men det kræver at perl kan
> opløse variablen. (jeg har ikke testet).

Har prøvet uden held ...

Mvh

Bo



Lars Kim Lund (22-09-2004)
Kommentar
Fra : Lars Kim Lund


Dato : 22-09-04 19:23

"Bo Overgaard" <boo@hotmail.com> wrote:

>> Får du nogen fejl i loggen?
>Nej, den ser fin ud - jeg går ud fra at det er iis-loggen du har i tankerne

Jeg kan ikke huske hvor man ser fejlbeskeden fra perl. Men jeg mener
det er i aktivitetsloggen (eller er der noget der hedder error-log?).

>> Anyway, det kan være flere ting. Det ene er at IIS'en (eller scriptet)
>> ikke har rettigheder til at eksekverer programmer.
>
>I min cgi-bin har jeg flere andre pelrscripts der eksekvere externe
>programmer. Men det er alle binaere "programmer" - kan man sige det. Jeg kan
>bare ikke kalde system komandoer dirrekte.

Så vil jeg tro det er rettigheder. Hvis du kører med anonym adgang så
kører dine scripts i IIS-brugerens kontekst. Den har ofte
gæsterettigheder og kan f.eks. ikke læse eller eksekvere filer i
system32, hvor cmd.exe ligger.

For at afprøve det kan du prøve at kopiere cmd.exe til samme sted som
scriptet og kalde det med direkte path og /c som beskrevet. Du kan
også påkræve auth på dit script, således at du skal logge ind for at
køre scriptet. I det tilfælde vil scriptet køre i din kontekst du
logger ind med.

Hvis en af de to ting virker, så er det rettigheder på din IIS-bruger
som webserveren bruger til at give anonym adgang. Og ydermere, hvis
det er tilfældet, så er det et Windows / IIS problem mere end det er
perl og vi burde flytte diskussionen til
dk.edb.system.ms-windows.server.

HTH,

--
Lars Kim Lund
http://www.net-faq.dk/

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste