0

Web ページからプロセスを強制終了しようとしています。

import os

os.system(“killall Laser”)

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

ファイルのパーミッションは 777 に設定されており、setuid と setgid を設定しました。スクリプトは、コマンドラインから実行すると機能しますが、ブラウザーでは機能しません。

これはubuntuで実行されており、Webサーバーはlighthttpです。

プロセスは 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)

何か案は?

マット

4

1 に答える 1

0

その設定でligghtpdを介してCGI / fastcgi-scriptsとして実行されるように.pyファイルを割り当てる必要があります:

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

そして、python スクリプトの最初の行にあるシバン (#!/usr/bin/env python) を忘れないでください。詳細については、こちらをお読みください: http://ubuntuforums.org/showthread.php?t=1166401

于 2012-11-27T17:23:37.227 に答える