博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于xterm.js的webssh实现
阅读量:6551 次
发布时间:2019-06-24

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

hot3.png

使用到的组件:

1 开源框架:xterm.js 

参考实例。只需要在页面引用css和js文件,再加上一个<div id="terminal-container"></div>即可。

            xterm.js demo        

xterm.js: xterm, in the browser

2 Python框架tornado。

在tornado中定义URL的映射:

(r'/ssh',views.WebTerminalHandler) 这表示了websocket的映射。

这里的挂件就是类WebTerminalHandler,它继承了tornado.websocket.WebSocketHandler。主要有三个方法:

def onopen(self) 表示打开了websocket。

def on_message(self,message) 表示接到浏览器通过websocket传输的字符,这里一次一个字符。

def on_close(self) 表示websocket关闭。

主要实现这三个方法即可。

每个WebTerminalHandler代表了一个客户端请求(一般是一个页面请求)。

3 paramiko库。下面第一部分初始化、连接,生成一个shell请求。第二部分读取shell中的内容,第三部分向shell中输入内容。

sshclient=paramiko.SSHClient()sshclient.load_system_host_keys()sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())sshclient.connect(hostname,port,username,password)chan=sshclient.invoke_shell(term='xterm')#################################################################while True:	data=chan.recv(512)	if not data:		break	#print(data)#################################################################chan.send(message)

这里注意,可以用一个sshclient的connection产生多个shell连接。

 


其他一些注意事项:

tornado.websocket.WebSocketHandler中def on_message(self,message)的message每次都是一个字符,但是unicode类型。处理方式要使用unicode的方式。

 

Python中字符和数字的转换

>>> ord('a')97>>> chr(97)'a'>>> ord('\r')13>>> chr(13)'\r'>>> ord('he')Traceback (most recent call last):  File "
", line 1, in
TypeError: ord() expected a character, but string of length 2 found>>>

 

转载于:https://my.oschina.net/shawnplaying/blog/688712

你可能感兴趣的文章
nodjs html 转 pdf
查看>>
MD5加密
查看>>
微信,想要说爱你,却没有那么容易!
查看>>
WSDP
查看>>
Memory Management
查看>>
JQUERY 对 表格中的数据重排序
查看>>
awk 常用方法
查看>>
Android网络框架实现之【Retrofit+RxJava】
查看>>
Android文件的加密与解密
查看>>
java笔记:SpringSecurity应用(二)
查看>>
php记录代码执行时间
查看>>
简简单单几段代码让自己变成最合格的网站管理员
查看>>
[置顶] 遵循Java EE标准体系的开源GIS服务平台之二:平台部署
查看>>
Java递归算法——阶乘
查看>>
Multi-voltage和power gating的实现
查看>>
JavaScript面向对象 ~ 原型和继承(1)
查看>>
spring cloud微服务分布式云架构--hystrix的使用
查看>>
解决Mac启动Eclipse Memory Analyzer报错问题
查看>>
连接池并发的实现原理
查看>>
创建Pch预编译文件
查看>>