网页中的 shell 是真 shell 还是其他?

2014-06-24 12:40:25 +08:00
 Lucups
我看到一些网站比如 Docker 官网的 Try it ( http://www.docker.com/tryit/ ),里面的 terminal 是真的把命令发给服务器执行把结果返回还是怎么做的?

我尝试用 PHP 写了一个,前端把获取到的命令,提交, PHP 用 exec 之类的函数执行,把打印出来的返回给前端。但这样虽然能执行一些简单的命令,但可以说完全达不到人家的那种效果。首先是不安全,其次是无法运行像 iPython 之类的交互环境。
5545 次点击
所在节点    Linux
14 条回复
ChiChou
2014-06-24 12:43:47 +08:00
you@tutorial:~$ sudo
sudo: command not found

显然不是真的
9hills
2014-06-24 12:44:45 +08:00
有两种
1. Emulator,模拟器,只是模拟几个命令罢了,很安全很简单
2. 真正的Shell

两个都有开源实现
liyanbowen
2014-06-24 12:52:21 +08:00
you@tutorial:~$ ls
This is an emulator, not a shell. Try following the instructions.
Lucups
2014-06-24 12:58:24 +08:00
其实我最想问的是如何实现。。。
@ChiChou
@liyanbowen
dorentus
2014-06-24 13:15:05 +08:00
@ChiChou
这个理由不成立……
sudo 又不是每个发行版都自带的
dianso
2014-06-24 13:21:46 +08:00
cgi调用的shell吧
chilaoqi
2014-06-24 13:25:12 +08:00
这种不是web terminal么?开源实现很多。
记得有单个js文件就可以实现的。
ShiningRay
2014-06-24 13:26:58 +08:00
看具体需求吧,有些是用真的shell,但是是环境是个沙箱,经过裁剪和保护的
chilaoqi
2014-06-24 13:31:42 +08:00
@ShiningRay Linux用户权限管理 很够用了吧。直接Server执行命令,STDOUT喂Queue,前端取出来就行。不安全的操作直接就拒绝了。
fdgogogo
2014-06-24 16:05:36 +08:00
https://github.com/elfet/console
这里有一个单文件的php实现, 可以参考下, top, vi之类的命令用不了

https://code.google.com/p/shellinabox/
这个是Linode用的Ajax Console, 功能更强大

另外还有好些Java applet实现的就不说了
txlty
2014-06-24 16:11:38 +08:00
用js写的linux虚拟机。这是真正的linux,不是shell。
http://bellard.org/jslinux/
txlty
2014-06-24 16:25:18 +08:00
三种。难度由易到难
1.用js模拟几个简单命令
2.把前端命令发给后端,再把执行结果发回前端。这可能安全吗?
3.用js写一个虚拟机,跑定制好的linux。
superbear
2014-06-24 17:09:07 +08:00
koding.com这个网站是怎么做的?线上开发环境
usedname
2014-06-24 21:52:42 +08:00
随便敲了几个都是command not found

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/119241

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX