uWSGI + Python子进程不执行shell命令。

问题描述 投票:0回答:1

uwsgi + Python子进程

大家好

我试图使用Python子进程模块在shell中运行一个简单的命令,一切都很好,直到我把uwsgi放在上面。我也使用flask作为web框架。

下面是非常简化的部分代码

if request.method == 'POST':  

            testquery = subprocess.run( "ifconfig", shell=True,stdout=subprocess.PIPE,universal_newlines=True )
            whoisresults=whoisquery.stdout
            print(whoisresults)

我得到了以下错误:binsh: 1: ifconfig: not found。

我把 "ifconfig "替换为Python虚拟evn运行的完整路径。

testquery = subprocess.run( "/home/net/netools/netoolsenv/bin ifconfig", shell=True,stdout=subprocess.PIPE,universal_newlines=True )
            whoisresults=whoisquery.stdout
            print(whoisresults)

但它仍然不能工作,只是错误是不同的 - binsh: 1: homenetnetoolsnetoolsenvbin: Permission denied

谁能告诉我应该往哪个方向挖?我是这里的初学者。

python subprocess
1个回答
0
投票

我得到了以下错误。/bin/sh: 1: ifconfig: not found

uWSGI守护进程通常以另一个用户的身份运行,而这个用户没有 PATH 设置。使用完整的绝对路径来 ifconfig.

要找到工具的完整路径,使用 which例如,在你的终端运行这个命令。

$ which ifconfig
/usr/bin/ifconfig

并使用该完整路径 ifconfig 在您的 Python 脚本中。

testquery = subprocess.run( "/usr/bin/ifconfig", shell=True,stdout=subprocess.PIPE,universal_newlines=True )
© www.soinside.com 2019 - 2024. All rights reserved.