簡體   English   中英

python從腳本發送命令到解釋器並獲取結果

[英]python send commands to interpreter from script and get result

我的目標是創建一個使用python和flask的網頁。 我希望能夠在此網頁中輸入一些命令,然后將它們提交給flask,該燒瓶將在python解釋器中執行命令。 然后Flask將檢索結果並將其發送回網頁進行演示。

如何才能做到這一點? 我目前能夠執行unix shell命令,但是我一生無法解決如何將命令發送至python解釋器並檢索結果的問題。

我想我應該弄清楚目的了。 這是針對我工作的公司的內部Web應用程序。 只有員工才能在我們的網絡上並且只有在執行正確的身份驗證之后才能訪問它。 員工需要一種與他們通過Web瀏覽器登錄的特定機器建立交互式外殼的方法。

解:

我找到了一個很好的模塊名稱Pexpect,它確實滿足我的要求。 感謝您的所有建議。

以下代碼使用flask和pexpect模塊調用python解釋器。

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

好了,您可以像執行Shell腳本一樣調用python,並使用-c選項將python代碼傳遞給它。 參見http://docs.python.org/2/using/cmdline.html

但是,這是不安全的,我不建議在Web應用程序中這樣做!

如果您對此有所設置,請閱讀Python中的受限執行http://docs.python.org/2/library/restricted.html

Flask隨附的Werkzeug調試器可以在出現異常時執行此操作,因此我認為將解決方案基於該代碼,或者至少了解Werkzeug的工作方式應該相當容易。

調試器服務器端代碼在此處 客戶端在這里

我希望您有充分的理由這樣做,通常您不希望隨機的人在您的服務器上執行代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM