0

サーバーに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}"

このスクリプトを実行し、コンポーネントとコマンドのパラメーターをそれぞれ「エンジン」と「開始」に追加すると、プロセスが開始され、シェルに出力されます

"""Content-Type: text/html\n"""
{ans:12}

しかし、最も重要なことは、プロセスを開始することです!

ただし、スクリプトを POST して実行すると、{ans:12} が返されますが、そもそも意図したプロセスが実行されません。論理的な説明はありますか?

4

1 に答える 1

1

まず、プロセスはおそらく実行されていますが、pythonコードは出力を処理していないため、次のいずれかであると思われます。

process = subprocess.Popen(['/usr/sbin/telepath','engine','start'], shell=False, stdout=subprocess.PIPE)
print process.stdout.read()

これが最も可能性が高く、ブラウザーではなくコマンドラインからの出力が表示される理由、またはスクリプトがユーザーとしてブラウザーを介して実行されapache、.userid/usr/sbin/telepath

于 2013-01-07T11:33:41.520 に答える