博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于tornado的web ssh项目
阅读量:7136 次
发布时间:2019-06-28

本文共 1415 字,大约阅读时间需要 4 分钟。

引言

上次有幸观看梁胜大牛的技术分享,其中一个演示是浏览器中显示了一个linux终端并登录管理server,于是决定自己实现一个

github中有一个项目gateone实现了此功能,本来想学习一下,但是考虑到代码实在过多就放弃了,下面说下自己的实现。

项目地址:[webssh]:

欢迎大家拍砖

介绍

  1. 终端展示

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

  2. 长连接

    这里使用了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连接即事件处理

  3. ssh登录

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

演示

下面是几张演示图稿:

webssh

cmd

top

vim

最后

如果使用上有任何问题,欢迎提给我:

Email:xsank#foxmail.com

转载地址:http://sktrl.baihongyu.com/

你可能感兴趣的文章
docker两个容器之间连接---centos7容器+mysql容器
查看>>
VML/SVG开发配电站接线系统
查看>>
Oracle 数据库导入导出 dmp文件
查看>>
浅谈什么是云主机及其优势所在
查看>>
使用命令行工具对LSI阵列卡进行高效管理
查看>>
利用Java编码实现对oracle数据库的操作
查看>>
java字符串分割处理split及特殊符号
查看>>
远程连接mysql慢
查看>>
我的友情链接
查看>>
Linux学习进阶路线图
查看>>
Java多线程编程之限制优先级
查看>>
linux系统中如何进入退出vim编辑器使用方法
查看>>
8. 比权量力-chmod,chown,umask,lsattr,chattr命令
查看>>
Jenkins RCE CVE-2019-1003000 漏洞复现
查看>>
NumberFormat和DecimalFormat
查看>>
PreferenceActivity
查看>>
Linux系统之系统简介
查看>>
快速排序(JAVA)
查看>>
mysql视图
查看>>
table 水平居中
查看>>