django-webssh:Django+paramiko 实现的 webssh。此项目存在已知BUG,最新请参考:https

上传者: 42117622 | 上传时间: 2025-02-22 23:44:57 | 文件大小: 990KB | 文件类型: ZIP
说明 基于 python3.7 + django 2.2.3 实现的 django-webshell,参考 。在参考项目的基础上做了一些优化:新增前端页面刷新确认页面(刷新会导致 websocket 连接断开)、后端 paramiko 线程创建代码优化、记录命令记录以及结果、支持 zmodem 上传下载文件(rz, sz)。有兴趣的同学可以在此基础上稍作修改集成到自己的堡垒机中。 所需技术: websocket 目前市面上大多数的 webssh 都是基于 websocket 协议完成的 django-channels django 的第三方插件, 为 django 提供 websocket 支持 xterm.js 前端模拟 shell 终端的一个库 paramiko python 下对 ssh2 封装的一个库 如何将所需技术整合起来? xterm.js 在浏览器端模拟 shell 终端,

文件下载

资源详情

[{"title":"( 74 个子文件 990KB ) django-webssh:Django+paramiko 实现的 webssh。此项目存在已知BUG,最新请参考:https","children":[{"title":"django-webssh-master","children":[{"title":"README.md <span style='color:#111;'> 2.06KB </span>","children":null,"spread":false},{"title":"LICENSE <span style='color:#111;'> 1.04KB </span>","children":null,"spread":false},{"title":"screenshots","children":[{"title":"2.PNG <span style='color:#111;'> 109.37KB </span>","children":null,"spread":false},{"title":"3.PNG <span style='color:#111;'> 16.53KB </span>","children":null,"spread":false},{"title":"6.PNG <span style='color:#111;'> 69.73KB </span>","children":null,"spread":false},{"title":"0.png <span style='color:#111;'> 39.47KB </span>","children":null,"spread":false},{"title":"7.PNG <span style='color:#111;'> 111.43KB </span>","children":null,"spread":false},{"title":"4.PNG <span style='color:#111;'> 110.38KB </span>","children":null,"spread":false},{"title":"1.PNG <span style='color:#111;'> 120.35KB </span>","children":null,"spread":false},{"title":"5.PNG <span style='color:#111;'> 100.46KB </span>","children":null,"spread":false}],"spread":true},{"title":"webssh","children":[{"title":"db.sqlite3 <span style='color:#111;'> 128.00KB </span>","children":null,"spread":false},{"title":"manage.py <span style='color:#111;'> 538B </span>","children":null,"spread":false},{"title":"run.bat <span style='color:#111;'> 28B </span>","children":null,"spread":false},{"title":"static","children":[{"title":"bootstrap.min.css <span style='color:#111;'> 118.36KB </span>","children":null,"spread":false},{"title":"bootstrap","children":[{"title":"3.3.7","children":[{"title":"bootstrap.min.css <span style='color:#111;'> 118.36KB </span>","children":null,"spread":false},{"title":"bootstrap.min.js <span style='color:#111;'> 36.18KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"bootbox","children":[{"title":"5.4.0","children":[{"title":"bootbox.min.js <span style='color:#111;'> 15.15KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"zmodem","children":[{"title":"zmodem.devel.js <span style='color:#111;'> 125.48KB </span>","children":null,"spread":false},{"title":"zmodem.min.js <span style='color:#111;'> 32.32KB </span>","children":null,"spread":false}],"spread":true},{"title":"webssh.js <span style='color:#111;'> 8.52KB </span>","children":null,"spread":false},{"title":"jquery","children":[{"title":"3.4.1","children":[{"title":"jquery.min.js <span style='color:#111;'> 86.08KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"xterm","children":[{"title":"3.14.5","children":[{"title":"xterm.min.css <span style='color:#111;'> 1.35KB </span>","children":null,"spread":false},{"title":"addons","children":[{"title":"fit.min.js <span style='color:#111;'> 1.66KB </span>","children":null,"spread":false},{"title":"fullscreen.min.js <span style='color:#111;'> 1.10KB </span>","children":null,"spread":false},{"title":"webLinks.min.js <span style='color:#111;'> 1.33KB </span>","children":null,"spread":false},{"title":"search.min.js <span style='color:#111;'> 5.26KB </span>","children":null,"spread":false},{"title":"fullscreen.min.css <span style='color:#111;'> 145B </span>","children":null,"spread":false},{"title":"attach.min.js <span style='color:#111;'> 2.17KB </span>","children":null,"spread":false},{"title":"terminado.min.js <span style='color:#111;'> 1.89KB </span>","children":null,"spread":false},{"title":"zmodem.min.js <span style='color:#111;'> 1.44KB </span>","children":null,"spread":false}],"spread":false},{"title":"xterm.min.js <span style='color:#111;'> 220.04KB </span>","children":null,"spread":false}],"spread":false},{"title":"xterm.js.map <span style='color:#111;'> 494.01KB </span>","children":null,"spread":false},{"title":"terminado.js.map <span style='color:#111;'> 4.34KB </span>","children":null,"spread":false},{"title":"terminado.js <span style='color:#111;'> 3.39KB </span>","children":null,"spread":false},{"title":"xterm.css <span style='color:#111;'> 3.95KB </span>","children":null,"spread":false},{"title":"xterm.js <span style='color:#111;'> 356.98KB </span>","children":null,"spread":false},{"title":"4.4.0","children":[{"title":"xterm.css <span style='color:#111;'> 3.98KB </span>","children":null,"spread":false},{"title":"xterm.min.js <span style='color:#111;'> 264.43KB </span>","children":null,"spread":false}],"spread":false},{"title":"style.css <span style='color:#111;'> 443B </span>","children":null,"spread":false}],"spread":false},{"title":"favicon.ico <span style='color:#111;'> 9.44KB </span>","children":null,"spread":false},{"title":"jquery.min.js <span style='color:#111;'> 93.71KB </span>","children":null,"spread":false}],"spread":true},{"title":"webssh","children":[{"title":"routing.py <span style='color:#111;'> 308B </span>","children":null,"spread":false},{"title":"settings.py <span style='color:#111;'> 3.29KB </span>","children":null,"spread":false},{"title":"urls.py <span style='color:#111;'> 858B </span>","children":null,"spread":false},{"title":"__pycache__","children":[{"title":"urls.cpython-37.pyc <span style='color:#111;'> 1.00KB </span>","children":null,"spread":false},{"title":"__init__.cpython-37.pyc <span style='color:#111;'> 146B </span>","children":null,"spread":false},{"title":"settings.cpython-37.pyc <span style='color:#111;'> 2.42KB </span>","children":null,"spread":false},{"title":"routing.cpython-37.pyc <span style='color:#111;'> 417B </span>","children":null,"spread":false}],"spread":true},{"title":"__init__.py <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"wsgi.py <span style='color:#111;'> 389B </span>","children":null,"spread":false}],"spread":true},{"title":"django_webssh","children":[{"title":"admin.py <span style='color:#111;'> 63B </span>","children":null,"spread":false},{"title":"models.py <span style='color:#111;'> 56B </span>","children":null,"spread":false},{"title":"tests.py <span style='color:#111;'> 60B </span>","children":null,"spread":false},{"title":"__pycache__","children":[{"title":"views.cpython-37.pyc <span style='color:#111;'> 855B </span>","children":null,"spread":false},{"title":"__init__.cpython-37.pyc <span style='color:#111;'> 153B </span>","children":null,"spread":false},{"title":"models.cpython-37.pyc <span style='color:#111;'> 191B </span>","children":null,"spread":false},{"title":"admin.cpython-37.pyc <span style='color:#111;'> 194B </span>","children":null,"spread":false}],"spread":false},{"title":"__init__.py <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"apps.py <span style='color:#111;'> 100B </span>","children":null,"spread":false},{"title":"tools","children":[{"title":"ssh.py <span style='color:#111;'> 5.51KB </span>","children":null,"spread":false},{"title":"channel","children":[{"title":"routing.py <span style='color:#111;'> 147B </span>","children":null,"spread":false},{"title":"__pycache__","children":[{"title":"websocket.cpython-37.pyc <span style='color:#111;'> 2.34KB </span>","children":null,"spread":false},{"title":"__init__.cpython-37.pyc <span style='color:#111;'> 167B </span>","children":null,"spread":false},{"title":"routing.cpython-37.pyc <span style='color:#111;'> 323B </span>","children":null,"spread":false}],"spread":false},{"title":"__init__.py <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"websocket.py <span style='color:#111;'> 3.17KB </span>","children":null,"spread":false}],"spread":false},{"title":"tools.py <span style='color:#111;'> 775B </span>","children":null,"spread":false},{"title":"__pycache__","children":[{"title":"ssh.cpython-37.pyc <span style='color:#111;'> 3.60KB </span>","children":null,"spread":false},{"title":"__init__.cpython-37.pyc <span style='color:#111;'> 159B </span>","children":null,"spread":false},{"title":"tools.cpython-37.pyc <span style='color:#111;'> 775B </span>","children":null,"spread":false}],"spread":false},{"title":"__init__.py <span style='color:#111;'> 0B </span>","children":null,"spread":false}],"spread":false},{"title":"views.py <span style='color:#111;'> 709B </span>","children":null,"spread":false}],"spread":true},{"title":"templates","children":[{"title":"index.html <span style='color:#111;'> 4.29KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"requirements.txt <span style='color:#111;'> 47B </span>","children":null,"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明