日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

WebSSH在线编程 所需工具介绍

發布時間:2024/1/8 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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在线编程 所需工具介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。