Django+paramiko實現webshell


說明

基於 python3.7 + django 2.2.3 實現的 django-webshell,支持顏色顯示,支持 tab 命令補全,項目地址:https://github.com/leffss/django-webssh 。參考項目。在參考項目的基礎上做了一些優化:新增前端頁面刷新確認頁面(刷新會導致 websocket 連接斷開)、后端 paramiko 線程創建代碼優化、記錄命令記錄以及結果。有興趣的同學可以在此基礎上稍作修改集成到自己的堡壘機中。

所需技術:

  • websocket 目前市面上大多數的 webssh 都是基於 websocket 協議完成的
  • django-channels django 的第三方插件, 為 django 提供 websocket 支持
  • xterm.js 前端模擬 shell 終端的一個庫
  • paramiko python 下對 ssh2 封裝的一個庫

如何將所需技術整合起來?

  1. xterm.js 在瀏覽器端模擬 shell 終端, 監聽用戶輸入通過 websocket 將用戶輸入的內容上傳到 django
  2. django 接受到用戶上傳的內容, 將用戶在前端頁面輸入的內容通過 paramiko 建立的 ssh 通道上傳到遠程服務器執行
  3. paramiko 將遠程服務器的處理結果返回給 django
  4. django 將 paramiko 返回的結果通過 websocket 返回給用戶
  5. xterm.js 接收 django 返回的數據並將其寫入前端頁面

流程圖

啟動

pip3 install -r requirements.txt
cd django-webssh/webssh/
python3 manage.py runserver 0.0.0.0:8000

訪問:http://127.0.0.1:8000

預覽







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM