python - uWSGI + Python子进程不执行shell命令
问题描述
uwsgi + Python 子进程
大家好,
我正在尝试使用 Python 子进程模块在 shell 中运行一个简单的命令,一切正常,直到我将 uwsgi 放在顶部。我也使用烧瓶作为网络框架。
这是代码的非常简化的部分
if request.method == 'POST':
testquery = subprocess.run( "ifconfig", shell=True,stdout=subprocess.PIPE,universal_newlines=True )
whoisresults=whoisquery.stdout
print(whoisresults)
我收到以下错误:/bin/sh: 1: ifconfig: not found
我用 Python virtual evn 运行的完整路径替换了“ifconfig”。
testquery = subprocess.run( "/home/net/netools/netoolsenv/bin ifconfig", shell=True,stdout=subprocess.PIPE,universal_newlines=True )
whoisresults=whoisquery.stdout
print(whoisresults)
但它仍然不起作用,只是错误不同 - /bin/sh: 1: /home/net/netools/netoolsenv/bin: Permission denied
谁能建议我应该朝哪个方向挖掘?我是这里的初学者。
解决方案
我收到以下错误:
/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 )
推荐阅读
- python - 从服务器自动运行带有 python 脚本的 bash 文件
- c++ - 写出正确的逻辑表达式
- xamarin.forms - 用于 UWP 的 Xamarin 表单集合视图 ItemsUpdatingScrollMode
- hibernate - 用于创建用户的参数化查询在 Spring Data JPA 中抛出丢失的用户或角色名称异常
- machine-learning - 如何自动选择时间序列模型进行预测?
- java - 如何破解 DataSource 以使用静态数据?(转换列表
到数据源 ) - javascript - 从字符串数组分配给 json 对象字段不起作用
- javascript - 增加对 JavaScript 中评估/执行的理解
- laravel - Quasar QList 分页与 QPagination 组件和 laravel paginate() 方法
- excel - 如何根据单词列表在excel中搜索列表以过滤掉