技术解析

网页中的 shell 是真 shell 还是其他?
0
2021-07-16 19:01:58
idczone
我看到一些网站比如 Docker 官网的 Try it ( http://www.docker.com/tryit/ ),里面的 terminal 是真的把命令发给服务器执行把结果返回还是怎么做的?

我尝试用 PHP 写了一个,前端把获取到的命令,提交, PHP 用 exec 之类的函数执行,把打印出来的返回给前端。但这样虽然能执行一些简单的命令,但可以说完全达不到人家的那种效果。首先是不安全,其次是无法运行像 iPython 之类的交互环境。
[email&sudo
sudo: command not found
显然不是真的

有两种
1. Emulator,模拟器,只是模拟几个命令罢了,很安全很简单
2. 真正的Shell
两个都有开源实现

[email&ls
This is an emulator, not a shell. Try following the instructions.

其实我最想问的是如何实现。。。

@liyanbowen

@ChiChou
这个理由不成立……
sudo 又不是每个发行版都自带的

cgi调用的shell吧

这种不是web terminal么?开源实现很多。
记得有单个js文件就可以实现的。

看具体需求吧,有些是用真的shell,但是是环境是个沙箱,经过裁剪和保护的

Linux用户权限管理 很够用了吧。直接Server执行命令,STDOUT喂Queue,前端取出来就行。不安全的操作直接就拒绝了。

https://github.com/elfet/console
这里有一个单文件的php实现, 可以参考下, top, vi之类的命令用不了
https://code.google.com/p/shellinabox/
这个是Linode用的Ajax Console, 功能更强大
另外还有好些Java applet实现的就不说了

用js写的linux虚拟机。这是真正的linux,不是shell。
http://bellard.org/jslinux/

三种。难度由易到难
1.用js模拟几个简单命令
2.把前端命令发给后端,再把执行结果发回前端。这可能安全吗?
3.用js写一个虚拟机,跑定制好的linux。

koding.com这个网站是怎么做的?线上开发环境

随便敲了几个都是command not found

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服