从Flask应用程序中运行Shell命令

9

我想在Flask应用程序中运行一个shell命令并尝试获取输出。我正在使用以下应用程序:

from flask import Flask
import subprocess

app = Flask(__name__)

@app.route("/")

def hello():
    cmd = ["ls"," -l"]
    p = subprocess.Popen(cmd, stdout = subprocess.PIPE,
                            stderr=subprocess.PIPE,
                            stdin=subprocess.PIPE)
    out,err = p.communicate()
    return out
if __name__ == "__main__" :
    app.run()

这个shell命令是可以的。我在外面检查过了,但从浏览器中得到了“内部服务器错误”的提示。

编辑:正如第一个答案指出的那样,它有一个错字...但现在它运行正常了,但我在浏览器中没有得到任何输出...

1个回答

14

这只是一个简单的打字错误。下面那一行的cd应该改为cmd

p = subprocess.Popen(cd, # <----
                     stdout=subprocess.PIPE,
                     stderr=subprocess.PIPE,
                     stdin=subprocess.PIPE)

更新

还有一个错别字;在第二个项目中删除一个空格:

cmd = ["ls", " -l"]
              ^

编辑过了...但是我在浏览器中没有得到任何输出... - Aftnix
@Aftnix,还有一个打字错误。请查看更新后的答案。 - falsetru
我只是打错了几个字,我应该先调试一下的。 - Aftnix
这个答案有一个错别字..它不应该是 cd,而应该是 cmd - nmz787
2
@nmz787,cd 是来自问题。我在第一行就提到了打字错误。 - falsetru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接