[Tutor] cgi with system calls
Nik
mymailinglists at neuf.fr
Tue Dec 14 15:09:26 CET 2004
ok, problem solved (well, partly - at least as much as I need it to be).
status = os.system('ps') doesn't set status equal to the output text, it
sets it to the return of the call (in this case '0'). What I really want
to do is
status = os.popen('ps').read()
print status
which works fine. However, why the first version confused the web server
I don't know, I guess the output from ps went somewhere it wasn't
supposed to.
nik
Nik wrote:
> no luck I'm afraid.
>
> Also, to make it even more annoying, omitting the os call and going for
>
> #!/usr/bin/python
>
> import cgitb; cgitb.enable()
>
> print "Content-type: text/plain\n\n"
> import os
>
> status = """PID TTY TIME CMD
> 3649 pts0 00:00:00 su
> 3652 pts0 00:00:00 bash
> 5197 pts0 00:00:00 ps
> """
> print status
>
>
> works fine.
>
> I've already half a dozen other scripts happily querying a database but
> this is the first one to have an error outside the usual brain fart stuff.
>
> nik
>
> Kent Johnson wrote:
>
>> Nik wrote:
>>
>>> hi,
>>>
>>> I'm trying to write a python cgi script that can control certain
>>> processes on my server, but I'm having some trouble.
>>> The script is;
>>>
>>> #!/usr/bin/python
>>>
>>> import cgitb; cgitb.enable()
>>>
>>> print "Content-type: text/plain\n\n"
>>
>>
>>
>> You may need explicit \r\n here, I'm not sure:
>>
>> print "Content-type: text/plain\r\n\r\n"
>>
>> Kent
>>
>>> import os
>>> cmd = "/bin/ps"
>>> status = os.system(cmd)
>>> print status
>>>
>>> which seems straight forward, but I get a server error, and
>>> malformed header from script. Bad header= PID TTY TIME CMD:
>>> appears in the apache logs. The PID TTY etc indicates it's getting
>>> the ps response, but why won't it display (even with text/plain)?
>>>
>>> Ultimately I'll have the content type as html, and I'm going to
>>> preprocess the output of ps so it probably won't cause any problems,
>>> but I just don't understand why this isn't working in its simple form?
>>>
>>> btw, the final idea is to list the processes corresponding to a
>>> certain name, and allow users to stop them or create new ones. I'm
>>> assuming this should be do-able?
>>>
>>> nik
>>> _______________________________________________
>>> Tutor maillist - Tutor at python.org
>>> http://mail.python.org/mailman/listinfo/tutor
>>>
>> _______________________________________________
>> Tutor maillist - Tutor at python.org
>> http://mail.python.org/mailman/listinfo/tutor
>>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list