Python 正在运行commands.getstatusoutput未从apache返回预期结果
我有以下代码作为get_status.pyPython 正在运行commands.getstatusoutput未从apache返回预期结果,python,apache,openstack,openstack-heat,Python,Apache,Openstack,Openstack Heat,我有以下代码作为get_status.py #!/usr/bin/env python from cgi import escape from flup.server.fcgi import WSGIServer import commands import subprocess def do_get_status(): cmd = """/usr/bin/heat --os-username admin --os-password admin --os-tenant-name adm
#!/usr/bin/env python
from cgi import escape
from flup.server.fcgi import WSGIServer
import commands
import subprocess
def do_get_status():
cmd = """/usr/bin/heat --os-username admin --os-password admin --os-tenant-name admin --os-auth-url http://ipaddress:35357/v2.0/ stack-show demo_stack"""
status, out = commands.getstatusoutput(cmd)
return "<pre>" + str(out) + "</pre>"
def app(environ, start_response):
# initialise and login to the website
#test = testpost.cookie(target_url,username, password)
qs = environ['QUERY_STRING']
result = do_get_status()
start_response('200 OK', [('Content-Type', 'text/html')])
return result
WSGIServer(app).run()
该python脚本正在apache cgi bin中运行。两天前,它工作得很好,但现在突然停止了工作。
若我接受命令并在命令行上运行它,我将得到预期的结果。我甚至尝试用python get_status.py运行同一段代码,得到了预期的结果。
我无法理解可能存在的问题。我自己能够解决这个问题。暴力的方式是禁用selinux。一旦我确定selinux是问题的原因,我就通过对selinux设置进行更精细的调整来进一步解决它,以允许从apache执行外部连接和cli命令(例如,根:
setsebool-P httpd\u can\u network\u connect 1
如中所述,您确定域可以http://openstackserver
但不是http://openstackserver.com
顺便问一下,我不确定v2.0
中的
是否可以作为URL的一部分。您是否尝试在浏览器中打开URL并查看是否工作正常?openstackserver是一个IP地址。正如我提到的,它在命令行中工作正常。是的,我能够打开url浏览器。你能够在bana解决这个问题吗?我也有同样的问题。我能够在python shell中执行,但不能在Django应用程序(由apache提供支持)中执行。是的,请禁用selinux,或者您可以微调selinux设置,以允许从apache执行外部连接和cli命令
Unable to establish connection to http://ipaddress:35357/v2.0/tokens