如何使用Apache2和CGI使用Python执行外部命令

如何使用Apache2和CGI使用Python执行外部命令,python,apache,apache2,cgi,suexec,Python,Apache,Apache2,Cgi,Suexec,我有一个apacheweb服务器。我有一个html文件和一个Python脚本,位于var/www/myfolder。我通过html文件提交表单,该文件由我的Python脚本处理(单击提交按钮时)。但是一旦处理了表单,我的Python脚本就会执行一个外部命令。(参见以下代码) webpage.html <!DOCTYPE html> <html> <head> <title>Webform</title>

我有一个apacheweb服务器。我有一个
html
文件和一个
Python
脚本,位于
var/www/myfolder
。我通过
html
文件提交表单,该文件由我的
Python
脚本处理(单击提交按钮时)。但是一旦处理了表单,我的
Python
脚本就会执行一个外部命令。(参见以下代码)

webpage.html

<!DOCTYPE html>
<html>
    <head>
        <title>Webform</title>
    </head>
    <body>
        <h3>Webform</h3>
        <form action="myscript.py" method="POST">
            <p>Name: <input type="text" name="name"></p>
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

网络表单
网络表单
姓名:

myscript.py

#!/usr/bin/python -W

import cgi, cgitb 
import sys
import os

# Get data from fields
form = cgi.FieldStorage() 
name = form.getvalue('name')

print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2></br></br>'
print '<p>Name: %s</p>' % (name)
print '</body>'
print '</html>'

os.system("./other_script.py") # gives me an error with permission
#/usr/bin/python-W
导入cgi,cgitb
导入系统
导入操作系统
#从字段中获取数据
form=cgi.FieldStorage()
name=form.getvalue('name')
打印“内容类型:text/html\r\n\r\n”
打印“
打印“
打印“Hello Word-第一个CGI程序”
打印“
打印“
打印“你好”字!这是我的第一个CGI程序

' 打印'名称:%s

'%(名称) 打印“ 打印“ os.system(“./other_script.py”)#给我一个权限错误
在我的服务器上,我是
user007
,但我知道当我在
html
文件上单击submit时,
Python
脚本作为
apache2
用户执行。问题是我不知道这个用户的密码(不能告诉我们sudo)。这两种想法是否可行:

1) 尝试从myscript.py执行
other_script.py
时,从
apache2
更改为
user007

#!/usr/bin/python -W

import cgi, cgitb 
import sys
import os

# Get data from fields
form = cgi.FieldStorage() 
name = form.getvalue('name')

print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2></br></br>'
print '<p>Name: %s</p>' % (name)
print '</body>'
print '</html>'

os.system("./other_script.py") # gives me an error with permission
2) 我知道您可以使用
suEXEC
更改用户,但我不知道如何使用它

有什么建议吗

我应该让您知道,在本地,两个python脚本都执行得很好

编辑1:


在错误发生之前,我收到以下消息:
警告:未设置主页,使用root://

这实际上是一个一般的系统/操作系统问题,而不是编程问题。检查
other_script.py
上的权限,确保为other或group设置了'r'和'x'位,例如
chmod 755 other_script.py
@achampion为了让它工作,我对所有文件都执行了
chmod 777
。还是不起作用。也许这不再重要了。但是我也遇到了类似的问题,并且在这个问题上遇到了困难。如果您的另一个脚本正在保存内容,则必须确保apache2用户(www数据)对该文件夹具有写入权限。我的解决方法是简单地将内容保存到
/tmp