所需技術:
websocket 目前市面上大多數的 webssh 都是基於 websocket 協議完成的
django-channels django 的第三方插件, 爲 django 提供 websocket 支持
xterm.js 前端模擬 shell 終端的一個庫
paramiko python 下對 ssh2 封裝的一個庫 前端
如何將所需技術整合起來?
一、xterm.js 在瀏覽器端模擬 shell 終端, 監聽用戶輸入經過 websocket 將用戶輸入的內容上傳到 django
二、django 接受到用戶上傳的內容, 將用戶在前端頁面輸入的內容經過 paramiko 創建的 ssh 通道上傳到遠程服務器執行
三、paramiko 將遠程服務器的處理結果返回給 django
四、django 將 paramiko 返回的結果經過 websocket 返回給用戶
五、xterm.js 接收 django 返回的數據並將其寫入前端頁面python
流程圖:git
具體實現:
https://github.com/huyuan1999/django-websshgithub