【发布时间】:2021-06-11 18:51:23
【问题描述】:
我想构建一个基于 Web 的终端,我想执行一个 shell 命令。
如何使用jQuery Terminal 库向 shell 发送命令并打印回复?
【问题讨论】:
-
我添加了这个问题和答案,因为我在 SEO 工具中发现人们正在搜索这个。
标签: javascript jquery shell jquery-terminal
我想构建一个基于 Web 的终端,我想执行一个 shell 命令。
如何使用jQuery Terminal 库向 shell 发送命令并打印回复?
【问题讨论】:
标签: javascript jquery shell jquery-terminal
因此,要执行 shell 命令,您需要有一个服务器代码。最简单的方法是使用,Apache 和 PHP。为此,您需要创建一个 PHP 脚本并使用允许执行 shell 命令的函数之一。
shell.php
<?php
if (isset($_POST['command'])) {
echo shell_exec($_POST['command']);
}
有了这个服务器端脚本,您可以使用 jQuery 终端编写 JavaScript 代码,该代码会将请求发送到该 PHP 脚本并显示结果。
$('body').terminal(function(command) {
return fetch('shell.php').then(res => res.text());
});
您可以做些什么来改进终端是使用 unix_formatting.js 文件,该文件将显示浏览器中的 shell 可能生成的任何 ANSI Escape 代码:
<script src="https://cdn.jsdelivr.net/npm/jquery.terminal/js/unix_formatting.js"></script>
如果你想看一个更高级的例子,你可以看看:
jcubic/jsh.php 作为单个文件创建,PHP shell 看起来像一个真正的终端。它使用一些技巧使其更加用户友好,例如使用 unbuffer(GNU/Linux 上的期望包的一部分)和其他 bash 技巧来使其显示每个命令的 ANSI 转义代码。默认情况下 ls 不返回颜色输出。
如果您想要更高级的东西,可以查看 Leash Shell 项目,该项目旨在提供对共享主机上 shell 的访问权限。
替代方案是:
【讨论】: