# cm-shell **Repository Path**: huangchengwu/cm-shell ## Basic Information - **Project Name**: cm-shell - **Description**: 本项目主要是用业余时间,用shell基于cgi开发的cmdb 就是一个简单的平台,就是玩玩 - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-21 - **Last Updated**: 2023-02-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安装 # 介绍 本项目没别的意思,主要是告诉那些说shell不能干什么的人,我认为语言就是工具能干什么完全取决于个人,只不过这个语言对于做这个东西合不合适而已 ## 编译 make run ## 卸载 make uninstall # 功能展示 ![演示图片](https://gitee.com/huangchengwu/cm-shell/raw/master/demo-img/01.png) ![演示图片](https://gitee.com/huangchengwu/cm-shell/raw/master/demo-img/02.png) ![演示图片](https://gitee.com/huangchengwu/cm-shell/raw/master/demo-img/03.png) ![演示图片](https://gitee.com/huangchengwu/cm-shell/raw/master/demo-img/04.png) # 项目介绍 ## 目录结构 server - func 功能函数 - form表单处理 - template 页面模板 - logo 日志 - static css,js,img资源 - task 打包部署模板 - form.cgi 处理表单相关逻辑 - index.cgi主页面路由相关逻辑 - login.cgi登录相关 ## 代码逻辑 ### 部署 ![演示图片](https://gitee.com/huangchengwu/cm-shell/raw/master/demo-img/deploy.png) 1. 读取数据库,渲染模板 2. 打包,拿数据模板,生成剧本 3. ansible 部署systemctl 进程管理服务并且启动后进行健康检测 ### 健康检查 ![演示图片](https://gitee.com/huangchengwu/cm-shell/raw/master/demo-img/check.png) 1. 检测600秒,循环检测,,成功告诉服务端,触发控制器逻辑,,比如更新slb或者mg ### 回滚 选择版本并且分发启动回滚,本操作不需要打包,并且可以跳过健康检测 ![演示图片](https://gitee.com/huangchengwu/cm-shell/raw/master/demo-img/rollBack.png) # 二次开发 ##开发流程 1. 在template base.html配置选项导航 2. 在index.cgi配置case路由 3. 在case里写自己逻辑,如果想获取数据库调用func里的db.sh 有个方法,需要传回调函数 # 功能优化 ## 不足 1. 登录逻辑比较简陋后续需要优化 2. 模板需要等服务器配置,本来是通过web但是因为shell处理urlencode能力有限所以就放弃了,表单默认走的urlencode,后来想通过上传模板解决,通过表单提交multipart/form-data,然后读取标准输出处理二进制字节写入文件,但是shell在处理二进制数据不友好所以最终也放弃了上传功能 3. controller这边没有开发,controller主要是通过检测成功后告诉服务端我更新完毕了,,你可以处理你的逻辑把,,如我修改nginx 权重0然后主机进行更新,,前提是使用docker 环境