我在服务器上有一个python脚本
#!/usr/bin/env python
import cgi
import cgitb; #cgitb.enable()
import sys, os
from subprocess import call
import time
import subprocess
form = cgi.FieldStorage()
component = form.getvalue('component')
command = form.getvalue('command')
success = True
print """Content-Type: text/html\n"""
if component=="Engine" and command=="Start":
try:
process = subprocess.Popen(['/usr/sbin/telepath','engine','start'], shell=False, stdout=subprocess.PIPE)
print "{ans:12}"
except Exception, e:
success = False
print "{ans:0}"
当我运行此脚本并将组件和命令参数添加到" Engine"和"开始"分别 - 它启动进程并打印到shell
"""Content-Type: text/html\n"""
{ans:12}
但最重要的是 - 它开始了这个过程!
然而,当我通过POST来运行脚本时,它返回{ans:12},但不会首先运行整个意图的过程。任何合理的解释?
答案 0 :(得分:1)
我怀疑这是两件事之一,首先你的进程可能正在运行,但你的python
代码没有处理输出,所以:
process = subprocess.Popen(['/usr/sbin/telepath','engine','start'], shell=False, stdout=subprocess.PIPE)
print process.stdout.read()
这是最有可能的,并解释了为什么您从命令行而不是浏览器看到输出,或者其次是因为脚本是以用户apache
而不是您的userid
通过浏览器运行的}检查/usr/sbin/telepath
的权限。