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,你可以将它提供给你想要与之共享特定会话的人)如果你认为这很有趣,我可能会详细说明这个
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()
添加回答
举报
