从 Flask 应用程序执行 bash 命令

Executing bash commands from flask application

应用详情:Ubuntu16.04 + flask + nginx + uwsgi

我正在尝试从 Flask 应用程序执行 bash 命令。

@app.route('/hello', methods=('GET', 'POST'))
def hello():
    os.system('mkdir my_directory')
    return "Hello"

上面的代码运行成功但没有创建任何目录。它还在我的本地创建了没有任何 nginx 级别设置的目录。

我也试过以下方法:

  1. subprocess.call(['mkdir', 'my_directory']) # 抛出内部服务器错误
  2. subprocess.call(['mkdir', 'my_directory'],shell=True) # 没有错误但是没有创建目录
  3. subprocess.Popen(['mkdir', 'my_directory']) # 抛出内部服务器错误
  4. subprocess.Popen(['mkdir', 'my_directory'],shell=True) # 没有错误但是没有创建目录

我是否需要更改任何 nginx 级别的配置。

终于明白了。我按照 Python 子进程调用 returns “未找到命令”,终端正确执行 .

我缺少的是 mkdir 的绝对路径。当我执行subprocess.call(["/bin/mkdir", "my_directory"])时,它成功地创建了目录。

以上 link 包含完整的详细信息。

此外,如果有人能描述我需要为 mkdir 指定绝对路径的原因,我将不胜感激。

感谢大家。 :)