亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在網頁上以交互方式運行 python 或 bash 腳本?

如何在網頁上以交互方式運行 python 或 bash 腳本?

holdtom 2023-03-01 17:03:12
我正在建立一個網站,我想在我的網頁上顯示一個以交互方式運行腳本(python 或 bash)的終端。有點像 trinket.io,但我想使用我服務器上的 python 解釋器或 bash,這樣我就可以安裝 pip 包并總體上控制腳本的各個方面。我在考慮類似交互式框架的東西,它顯示終端和其中執行的內容,obv 支持用戶交互。一個很好的例子是https://create.withcode.uk/,它正是我想要的,但我想用我自己的模塊和生態系統將它托管在我自己的服務器上。這在安全方面似乎也很不錯。有沒有這樣的東西?
查看完整描述

2 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

如果我理解得很好,你會尋找一種機制,它允許你在網絡服務器上顯示一個終端。


然后你想在那個終端上運行一個交互式 python 腳本,對吧。


所以最終共享一個終端的解決方案不一定要用python寫,對吧?(雖然我必須承認,如果我找到它們,我更喜歡 python 解決方案,但有時務實并不是一個壞主意)


您可能會在 google 上搜索 http 和終端仿真器。


也許 ttyd 符合要求。https://github.com/tsl0922/ttyd


在 Linux 上構建可以用


sudo apt-get install build-essential cmake git libjson-c-dev libwebsockets-dev

git clone https://github.com/tsl0922/ttyd.git

cd ttyd && mkdir build && cd build

cmake ..

make && make install

用法類似于:ttyd -p 8888 yourpythonscript.py


然后你可以連接到網絡瀏覽器http://hostip:8888


您當然可以將此 URL“隱藏”在反向代理后面并為其添加身份驗證或添加諸如--credential username:password密碼保護 URL 之類的選項。


附錄: 如果您想與不同的人共享多個腳本并且共享更像是一個即時的事情,那么您可以查看 tty-share ( https://github.com/elisescu/tty-share ) 和 tty-server ( https://github.com/elisescu/tty-server )


tty-server 可以在 docker 容器中運行。tty-share 可用于在您的機器上的一個終端上運行腳本。它會輸出一個 url,你可以將它提供給你想要與之共享特定會話的人)如果你認為這很有趣,我可能會詳細說明這個


查看完整回答
反對 回復 2023-03-01
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

>> 在此插入安全免責聲明 <<


最簡單、最駭人聽聞的方法是創建一個div用于存儲輸出的元素和一個input用于輸入命令的元素。然后你可以將POST命令ajax到后端控制器。


控制器將接受命令并運行它,同時捕獲命令的輸出并將其發送回網頁以在div


在 python 中,我使用它來捕獲命令輸出:


from subprocess import Popen, STDOUT, PIPE


proc = Popen(['ls', '-l'], stdout=PIPE, stderr=STDOUT, cwd='/working/directory')

proc.wait()

return proc.stdout.read()


查看完整回答
反對 回復 2023-03-01
  • 2 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號