Как выполнять внешние команды с Python, используя Apache2 и CGI
У меня есть веб-сервер Apache. у меня есть 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
На моем сервере я нахожусь user007
но я знаю, что когда я нажимаю кнопку отправить на html
файл, Python
сценарий выполняется как apache2
пользователь. Проблема в том, что я не знаю пароль для этого пользователя (не можем ли мы sudo). Возможны ли две идеи:
1) изменить с apache2
в user007
при попытке выполнить other_script.py
из myscript.py
2) Я знаю, что вы можете менять пользователей, используя suEXEC
но я понятия не имею, как его использовать.
Какие-либо предложения?
Я должен сообщить вам, что локально оба скрипта Python работают нормально.
Изменить 1:
Я получаю это сообщение до появления ошибки: WARNING: HOME is not set, using root: /