为了账号安全,请及时绑定邮箱和手机立即绑定

如何在网页上以交互方式运行 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 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号