欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

WebSSH在线编程 所需工具介绍

发布时间:2024/1/8 编程问答 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 WebSSH在线编程 所需工具介绍 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Xterm.js

Xterm是一个X Window System上的终端模拟器,用来提供多个独立的SHELL输入输出。

简单说:
xterm 是一个使用 TypeScript 编写的前端终端组件,可以直接在浏览器中实现一个命令行终端应用。xterm是x窗口环境中对本地虚拟控制台的一个实现。

再直白点 可以在html页面下实现 终端(DOC命令行),并且发送WebSocket的指令给后台。

Paramiko SSH

ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。

有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。
由于paramiko属于第三方库,所以需要使用如下命令先行安装

pip3 install paramiko

组成

paramiko包含两个核心组件:SSHClient和SFTPClient。

SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。
SFTPClient的作用类似与Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操作,如文件上传、下载、修改文件权限等操作。

Paramiko中的几个基础名词:

1、Channel:是一种类Socket,一种安全的SSH传输通道;
2、Transport:是一种加密的会话,使用时会同步创建了一个加密的Tunnels(通道),这个Tunnels叫做Channel;
3、Session:是client与Server保持连接的对象,用connect()/start_client()/start_server()开始会话。

参考原址

DWebSocket

django实现websocket大致上有两种方式,一种channels,一种是dwebsocket。channels依赖于redis,twisted等,相比之下使用dwebsocket要更为方便一些

安装

pip3 install dwebsocket

配置

INSTALLED_APPS = [..........'dwebsocket', ]MIDDLEWARE_CLASSES = [............'dwebsocket.middleware.WebSocketMiddleware' # 为所有的URL提供websocket,如果只是单独的视图需要可以不选 ] WEBSOCKET_ACCEPT_ALL=True # 可以允许每一个单独的视图实用websockets

使用

from dwebsocket.decorators import accept_websocket,require_websocket@accept_websocket @require_websocket

accept_websocket-—可以接受websocket请求和普通http请求
require_websocket----只接受websocket请求,拒绝普通http请求

举个例子

from django.shortcuts import render,HttpResponse# Create your views here. def login(request):return render(request,'login.html')from dwebsocket.decorators import accept_websocket @accept_websocket def path(request):if request.is_websocket():print(1)request.websocket.send('下载完成'.encode('utf-8'))

dwebsocket的一些内置方法:

  • request.is_websocket():判断请求是否是websocket方式,是返回true,否则返回false
  • request.websocket: 当请求为websocket的时候,会在request中增加一个websocket属性,
  • WebSocket.wait() 返回客户端发送的一条消息,没有收到消息则会导致阻塞
  • WebSocket.read() 和wait一样可以接受返回的消息,只是这种是非阻塞的,没有消息返回None
  • WebSocket.count_messages()返回消息的数量
  • WebSocket.has_messages()返回是否有新的消息过来
  • WebSocket.send(message)像客户端发送消息,message为byte类型

总结:Xterm获取并发送连接终端和命令的消息,dwebsocket进行接收websocket的消息,通过paramiko进行发送和反馈结果。消息的结果反馈也是一样,是个闭环。

案例及配置
WebSSH在线编程1
WebSSH在线编程2

总结

以上是生活随笔为你收集整理的WebSSH在线编程 所需工具介绍的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。