python os.system从cgi中删除进程

时间:2012-11-27 15:55:30

标签: python linux process

我正试图从网页上删除某个进程。

import os

os.system(“killall Laser”)

print("Content-Type: text/HTML;charset=utf-8")
print("")
print("Laser has been restarted.")

文件权限设置为777,我已设置setuid和setgid。当我从命令行运行它而不是在浏览器中运行时,脚本可以工作。

这是在ubuntu上运行的,而网络服务器是轻而易举的。

该进程归root所有。

我也尝试过使用:

import subprocess as sub, cgitb

cgitb.enable(display=0, logdir="/tmp")

p = sub.Popen(['killall;', 'Laser'],shell=True,stdout=sub.PIPE,stderr=sub.PIPE)
output, errors = p.communicate()
print("Content-Type: text/HTML;charset=utf-8")
print("")
print(output)

import subprocess as sub, cgitb

cgitb.enable(display=0, logdir="/tmp")

cmd1 = "su root"
cmd2 = "killall Laser"
p = sub.Popen("{}; {}".format(cmd1, cmd2),shell=True,stdout=sub.PIPE,stderr=sub.PIPE, close_fds=True)
output, errors = p.communicate()
print("Content-Type: text/HTML;charset=utf-8")
print("")
print(output)

有什么想法吗?

马特

1 个答案:

答案 0 :(得分:0)

你应该通过配置中的ligghtpd分配.py文件作为CGI / fastcgi-scripts运行:

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( ".py" => "/usr/bin/python" )
}

不要忘记python脚本第一行上的shebang(#!/ usr / bin / env python)。 请阅读此处了解更多详情:http://ubuntuforums.org/showthread.php?t=1166401