【问题标题】:How to embed linux terminal in Django based webpage? [closed]如何在基于 Django 的网页中嵌入 linux 终端? [关闭]
【发布时间】:2016-06-20 14:49:46
【问题描述】:

我开发了一个基于 django 的应用程序,它使用 Views 与最终用户交互,然后在底层操作系统 (Linux) 上工作。该系统的目的是为基于 linux 的系统提供一个用户友好的界面。这项任务几乎可以使用 Django 和 Python 完成。现在客户想看看linux是如何实时处理这些命令的。

举一个在网站视图上查找文件的示例,我有一个文本框,可以在其中输入文件名并点击一个名为搜索的按钮。因此,系统可能需要长达 5 分钟的时间,并在 find 命令执行结束时将结果返回给用户。客户不乐意坐下来观看一个盘旋的弹出窗口并希望在网页上看到 linux shell 或类似的东西。

==> 我的问题是如何在网页中集成 Linux Shell/终端?

这个问题还有其他替代方法吗?我的意思是客户不会介意我是否可以通过刷新屏幕来显示 linux 命令行输出,所有新行都发送到 Shell 的标准输出。

请指教。 谢谢。

【问题讨论】:

  • 太宽泛了。一个完整的答案需要讨论安全考虑(沙盒、chroot 等)、连接类型(http 与 web 套接字与其他)、是否支持单个 Linux 发行版与通用,等等。跨度>
  • 我正在 Virtualbox 环境中编写应用程序,根据要求客户将获得整个 Virtualbox/VDI 文件,因此它只是特定于机器的设置。此处的安全性不是问题,因为客户将在 Intranet 中运行此应用程序,除了少数已知用户之外,任何人都无法访问该应用程序。
  • 您仍然必须采取预防措施,防止他们以 root 身份运行命令或运行会中断程序执行的命令。
  • 同意。我创建了无密码 sudo。因此名为 admin 的用户可以毫无问题地执行“sudo ”。你能告诉我如何在网页中嵌入一个 linux 终端或 shell 吗?或者我还能做些什么来在网页上实时显示 linux 终端输出?
  • @learner 你可以看看shell in a box 或者更好的wetty,因为它有一个 dockerized 版本

标签: python linux django shell


【解决方案1】:

您可以查看shellinaboxwetty。它们都随着时间的推移而得到维护。
引用shellinabox:

Shell In A Box 实现了一个 Web 服务器,可以将任意命令行工具导出到基于 Web 的终端模拟器。任何支持 JavaScript 和 CSS 的 Web 浏览器都可以访问该模拟器,并且不需要任何额外的浏览器插件。 shellinaboxd 守护进程实现了一个监听指定端口的网络服务器。 Web 服务器发布一个或多个服务,这些服务将显示在作为 AJAX Web 应用程序实现的 VT100 模拟器中。

引用wetty

基于 HTTP 和 HTTPS 的终端。 Wetty 是 ajaxterm/anyterm 的替代品,但比它们好得多,因为 wetty 使用 ChromeOS 的终端仿真器 (hterm),它是完全用 Javascript 编写的终端仿真的完整实现。它还使用 websockets 而不是 Ajax,因此响应时间更短。

Wetty 也有一个 dockerized 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多