我有一个命令行工具如下:
tool -o output -a authentication.txt -i input.txt
(它获取一些文件作为输入)
我想做的是使用烧瓶或django为此命令行工具提供一个Web界面,因为该工具基于Python。因此,您能否指导我如何调用该工具并从Stdout获得其结果!另外,工具具有配置文件,我也想在Web界面中打开和编辑。
我最初的想法是打电话给Python Subprocess致电该应用程序以获取其Stdout,但不知道它是多么明智的?S
有很多方法可以做到!我不知道你要做什么。但是基本的例子就是这样。您提到这是Python程序/应用程序。您可以将命令行工具作为软件包导入。如果不是包装,则包装https://packaging.python.org/。您作为参数传递的参数,您可以通过应用程序传递。在烧瓶中,您会做这样的事情。 pseudo app.py
import tool
@app.route("/")
def index():
return render_template("index.html")
@app.route('/tool')
def tool(input):
auth = tool.auth()
input = tool.input(input)
return output
假设Python 3.5:
import subprocess
res = subprocess.run(["tool", "-o", "output", "-a", "authentication.txt", "-i", "input.txt"])
res.stdout
在较早版本中,您可以使用以下内容,这将在非零返回代码上提高CalledProcessError
。
print(subprocess.check_output(
"/usr/local/bin/spam bacon spam",
stderr=subprocess.STDOUT,
shell=True))
# => EGGS AND SPAM!
请谨慎使用不信任(例如用户)输入运行命令,请确保对参数进行正确消毒。记住要测试恶意输入,例如试图逃脱命令以运行不同的东西。
尝试确保最终执行命令的系统用户(通常是应用程序用户/Web服务器用户),如果/何时不可避免地会通过限制其权利,则不能太多。机器。