python从脚本向解释器发送命令并获取结果

时间:2013-07-18 21:56:15

标签: python flask ipython

我的目标是创建一个使用python和flask的网页。我希望能够在这个网页中输入一些命令,将它们提交给将在python解释器中执行命令的flask。然后,Flask将检索结果并将其发送回网页进行演示。

如何做到这一点?我目前能够执行unix shell命令,但在我的生活中无法弄清楚如何将命令发送到python解释器并检索结果。

我想我应该澄清目的。这是我工作的公司的内部Web应用程序。只有员工才能在我们的网络上访问它,并且只有在执行了正确的身份验证之后才能访问它。员工需要一种方法,使用他们通过Web浏览器登录的特定计算机具有交互式shell。

解决方案:

我找到了一个很好的模块名称Pexpect,它完全符合我的要求。感谢您提出的所有建议。

3 个答案:

答案 0 :(得分:1)

以下代码使用flask和pexpect模块来调用python解释器。

@app.route('/console')
def console(): 
    import pexpect
    child = pexpect.spawn('python')
    child.expect('\n>>>')
    child.sendline('import os')
    child.expect('\n>>>')

答案 1 :(得分:0)

好吧,你可以像调用shell脚本一样调用python,并使用-c选项将python代码传递给它。见http://docs.python.org/2/using/cmdline.html

然而,这是令人难以置信的不安全因素,我不建议在网络应用程序中进行此操作!

如果您对此进行了设置,请阅读Python http://docs.python.org/2/library/restricted.html

中的受限执行

答案 2 :(得分:0)

Flask附带的Werkzeug调试器可以在出现异常时执行此操作,因此我认为将解决方案基于该代码应该相当容易,或者至少要了解Werkzeug是如何做到的。

调试器服务器端代码为here。客户端是here

我希望你有充分的理由这样做,你通常不希望随机的人在你的服务器上执行代码。