Python运维管理系统源代码,基于fastapi异步框架
部署方式
创建虚拟环境
python -m venv venv
安装依赖库
pip install -r requirements.txt
初始化数据库
alembic init alembic alembic revision --autogenerate -m "first commit" alembic upgrade head --sql > update.sql alembic upgrade head
添加文档白名单
文档uri做了ip过滤,需要连接到数据库,write_ip表中添加可访问ip http://localhost:8000/docs#/
添加管理员账号
运行script/generapwd.py生成密码,编辑数据库sys_user表添加一行用户数据,is_supser字段1 之后登陆/docs进行登陆认证,认证通过后,其他接口便有权限操作
完整程序下载地址:Python运维管理系统源代码
main.py
from fastapi import FastAPI, HTTPExceptionimport osfrom core import routerimport uvicornfrom fastapi.staticfiles import StaticFilesfrom fastapi.exceptions import RequestValidationErrorfrom core import configfrom events import eventsfrom response import http_errorfrom middleware.middleware import init_middlewaresfrom websocket.websocket import Echofrom middleware.request_limit import init_limit__author__ = 'ren_mcc'app = FastAPI(title=config.DOC_TITLE, description="", version=config.DOC_VERSION,docs_url=config.DOC_URL, redoc_url=None)# 加载路由app.include_router(router.api_router, prefix='/api')# 启动关闭事件# app.add_event_handler("startup", events.start_init_db_handler(app))# app.add_event_handler("shutdown", events.stop_shutdown_db_handler(app))app.add_event_handler("startup", events.start_init_sys_api_handler(app))# 异常处理app.add_exception_handler(HTTPException, http_error.http_error_handler)app.add_exception_handler(RequestValidationError, http_error.validation_exception_handler)# 中间件init_middlewares(app)# 挂载静态文件资源目录# app.mount("/static", StaticFiles(directory=os.path.join(os.getcwd(), "static")), name="static")# webSocketapp.add_websocket_route('/ws', Echo)# 初始化限速init_limit(app)if __name__ == '__main__':uvicorn.run(app="main:app", workers=1, host='0.0.0.0', port=8000)
generapwd.py
import hashlibfrom core.config import SECRET_KEY__author__ = 'ren_mcc'def md5_encrypt(pwd: str):md5_hash = hashlib.md5()if pwd:pwd = pwd.encode("utf8")md5_hash.update(pwd)return md5_hash.hexdigest()def sha1_encrypt(pwd: str):sha1_hash = hashlib.sha1()if pwd:pwd = pwd.encode('utf8')sha1_hash.update(pwd)return sha1_hash.hexdigest()def encrypt_password(pwd: str, loginname: str):"""加密密码"""# 先用 md5 加密md5_value = md5_encrypt(pwd + SECRET_KEY)# 再用 sha1 加密final_pwd = sha1_encrypt(md5_value + loginname)return final_pwda = encrypt_password("910202", "admin")print(a)
完整程序下载地址:Python运维管理系统源代码