[thelist] Execute external command in ASP
Joe Ngo
chilijoe at gmail.com
Thu Aug 18 10:23:03 CDT 2005
On 7/26/05, Canfield, Joel <JCanfield at pacadvantage.org> wrote:
> > is there a way to execute and external command-line program in classic
> > ASP and capture its output? I'm looking for something similar to the
> > system() command in PHP.
>
> I've used WSCRIPT.SHELL to automate command line ftp, among other
> things. Here's a snippet of code, in case it's helpful:
>
> ----------------------------------------
>
> Set oScript = Server.CreateObject("WSCRIPT.SHELL")
>
> '**********************************************************
> ' create command string, map path to the ftp command file
> ' created above, create temp file for logging
> '**********************************************************
> strCMD = "ftp.exe -s:" & Server.MapPath("vendor.ftp")
> strLogFile = "C:\Inetpub\wwwroot\it\transmissions\logs\vendor" &
> datDataDate & ".log"
>
> '**********************************************************
> ' run the command, output to the temp file, then read it
> '
> '**********************************************************
> Call oScript.Run("cmd.exe /c " & strCMD & " > " & strLogFile, 0, True)
> Set oFile = objFSO.OpenTextFile (strLogFile, 1, False, 0)
>
> ----------------------------------------
>
> joel
>
I've tried the above suggestion and I'm getting Permission Denied error.
Basically I want to execute a python script and capture the output. My
strCMD looks like this:
cmd.exe /c {path_to_python_exe} {python_script} {parms} > {output_file}
This gives back a Permission Denied error. If I change it to:
{path_to_python_exe} {python_script} {parms} > {output_file}
then there's no error, but the output file is also not written. I'm
not sure if python was actually executed. However, I'm almost sure I
have write access to the output folder since I use the same ASP script
to upload a file to that folder.
Since I'm aiming at capturing the python output, I had better luck
with the WshScriptExec object. I tried copying the code in the
following page:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wslrfstdoutproperty.asp
With the following result:
Set oShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec({path_to_python_exe} {python_script} {parms})
Do While True
If Not oExec.StdOut.AtEndOfStream Then
Response.Write(oExec.StdOut.Read(1))
Else
Exit Do
End If
Loop
This seems to work fine, but if you compare it to the original sample
code, I had to remove the WScript.Sleep line because it doesn't seem
to be valid in the context of ASP. I think the sleep is necessary to
make it more efficient. Is there an alternative to WScript.Sleep for
ASP pages?
Thanks
Joe
More information about the thelist
mailing list