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屬于第三方庫,所以需要使用如下命令先行安裝
組成
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_websocketaccept_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在线编程 所需工具介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【UE4】使用Composure插件在场
- 下一篇: ps4仁王服务器不稳定,原来《仁王》放弃