同步操作将从 逐浪人/python-websocket-shell 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
web目录可以部署在任意的http服务器上
web客户端可以通过注册账号和修改密码修改config.json的账号的信息
账号权限信息和可执行命令由超级用户在管理界面修改
python通过配置文件config.cfg配置的url路径读取config.json的内容,主要用于校验
在python运行期间如果有新注册账户登录就重新读取url内容
这里解释一下用到的两个bison_key
config.php用到的key主要用来加密密码和配置数据的接口,python获取数据的时候要用到同样的key
login.php用到的key用来和时间戳生成一个token,JavaScript拿着这个token去和python建立连接,python在校验这个token的合法性时 需要用到同样的key
因为打开页面的浏览器需要跟server.py运行服务器在一个内网,因为他们需要建立socket链接
客户端的JavaScript通过websocket跟服务端的python建立链接,发送命令的id,服务端寻找id对应的命令然后执行
执行的结果实时回显在客户端的页面上
本项目从下面的项目修改而来 https://github.com/Pithikos/python-websocket-server.git
之前一直想让普通用户在未获得linux账号的前提下执行一些linux或mac上的shell 如服务器更新,app发布,配置数据更新等
此前的做法一直是winscp或putty脚本来实现,缺点是不安全也不够灵活,账户和密码都在明文的脚本里边放着
本项目解决了这个问题,普通用户通过点击网页就可以完成执行命令的操作了 跟jenkins(http://jenkins-ci.org/ )的功能可能有重合,有时间了我去试下,不过这个项目更轻便一些
用法说明:
启动服务 ./start.sh
停止服务 ./start.sh stop
web目录为root的nginx配置写法如下,location后面的位置是从web的根目录开始的
location =/config.json{
return 404;
}
apache的配置
<Directory "/Library/WebServer/Documents">
Options FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride None
Require all granted
<Files ~ "\.json$">
Order allow,deny
Deny from all
</Files>
</Directory>
之所以没选择数据库来配置只是为了让网站更容易配置,本项目的初衷就是为了更方便的让普通用户访问脚本
Thanks
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。