资讯专栏INFORMATION COLUMN

基于tornado的web ssh项目

cheukyin / 671人阅读

摘要:引言上次有幸观看梁胜大牛的技术分享,其中一个演示是浏览器中显示了一个终端并登录管理,于是决定自己实现一个中有一个项目实现了此功能,本来想学习一下,但是考虑到代码实在过多就放弃了,下面说下自己的实现。

引言

上次有幸观看梁胜大牛的技术分享,其中一个演示是浏览器中显示了一个linux终端并登录管理server,于是决定自己实现一个
github中有一个项目gateone实现了此功能,本来想学习一下,但是考虑到代码实在过多就放弃了,下面说下自己的实现。

项目地址:[webssh]: https://github.com/xsank/webssh
欢迎大家拍砖

介绍

终端展示
使用了github开源项目 term.js,这是个很赞的项目,因为在刚开始写的时候你会发现linux返回的很多内容带有特殊字符,需要穷举处理,而这里正好有一个框架帮你做了这些复杂的操作
例如,linux 本身返回的字符是这样子的:

所以你需要对于特殊字符格式化处理,才能正确显示成linux终端的文本行

长连接
这里使用了websocket,因为类似top这样的监控命令需要服务器定时推送
在这里,为了提高server端性能及效率,使用了epoll的ET模式,主要代码如下:

def run(self):
    while True:
        epoll_list = self.select.poll()
        for fd, events in epoll_list:
            if select.EPOLLIN & events:
                while True:
                    try:
                        data = self.bridges[fd].shell.recv(1024)
                    except socket.error, e:
                        if e.errno == errno.EAGAIN:
                            self.select.modify(fd, select.EPOLLET)
                        elif isinstance(e, socket.timeout):
                            break
                        else:
                            self.close(fd)
                    try:
                        self.futures[fd].send(data)
                    except StopIteration:
                        break
            elif select.EPOLLHUP & events:
                self.close(fd)
            else:
                continue

由epoll来管理所有websocket连接即事件处理

ssh登录
使用第三方paramiko库来支持server的加密登录
总结来说,webssh相当于一个ssh代理服务器,只要她可以访问的服务器,你都可以通过浏览器连接登录而不用任何客户端

演示

下面是几张演示图稿:

最后

如果使用上有任何问题,欢迎提给我:
Email:xsank#foxmail.com

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45398.html

相关文章

  • Tornado-02、编写第一个tornado程序

    摘要:简介是使用编写的一个强大的可扩展的服务器。是一个编写对请求响应的框架。作为程序员,你的工作是编写响应特定条件请求的响应的。注意不能序列化一个列表,但是字典是可以的。 1.Tornado简介 tornado是使用Python编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。 tornado的...

    silencezwm 评论0 收藏0
  • Day 25: 联合Tornado、MongoDB 和 AngularJS 进行应用开发

    摘要:在被收购之后,维护并继续发展。设置是告诉应用在目录寻找应用模板。设置告诉应用使用目录里面的类似图像文件等静态文件。我们会在应用开发过程中,保持着调试器在后台运行。这能提供高效的开发环境。我们会把回应状态设为已创建。 编者注:我们发现了有趣的系列文章《30天学习30种新技术》,正在翻译,一天一篇更新,年终礼包。下面是第23天的内容。 今天的《30天学习30种新技术》,我决定暂时放下...

    hsluoyz 评论0 收藏0
  • Tornado-01、ubuntu环境配置与连接pycharm

    摘要:一虚拟机的安装及配置首先在虚拟机里安装这个是已经配置好了的文件以及它的使用说明链接密码如果链接失效请联系我更换注意一定要看文件使用说明文档切记虚拟机的帐号密码都在文档里有写地址要关闭虚拟机之后再更改二与虚拟机的连接下连接虚拟机的步骤关闭所有 一、虚拟机的安装及配置 首先在虚拟机里安装ubuntu这个是已经配置好了的ubuntu ova文件以及它的使用说明链接:https://pan....

    cikenerd 评论0 收藏0

发表评论

0条评论

cheukyin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<