1.认证思路刨析过程 1.请求头去哪里拿? 1.服务器端代码: def test(request): print(request) return HttpResponse('你得到我了') 2.客户端1: import requests key = "asdfuasodijfoausfnasdf" response = requests.get('http://127.0.0.1:8000/api/test.html',headers={'auth_api':key}) print(r…
自动化运维平台愿景和服务器管理系统背景 服务器管理系统 管理后台示例 需求和设计 为什么开发服务器管理系统? 背景: 原来是用Excel维护服务器资产,samb服务[多个运维人员手动维护] 搭建运维自动化平台[服务器管理] 预算 部门合作数据交换,处理麻烦 目标: 硬件资产自动采集 API 架构设计: 采集资产[每台服务器上安装的客户端,agent,定时任务每天凌晨2点] API[入库和比较创建变更日志] 后台管理部分 系统目标 1. 自动采集服务器硬件资产信息 2. 报表 3. API(给其他…
一.服务器管理回顾 1.requests 发送: requests.post(url='',data=,json=) requests.get() Django接受: request.POST, content-type: 2.API验证 key,time|time 二.问题汇总 1.汇总目录 a. 服务器资产采集系统流程? ssh:中控机, salt:master, agent:每台服务器都需要 b. 代码如何部署到服务器上? - git - 代码打成:rpm包,运维 yum install…
当CMDB运行在内网的时候,经过API验证的三关是没有问题的,但是如果运行在外网,有一个问题是,黑客截取后的访问速度比客户端快的时候还会造成数据泄露.为了解决这个问题,就要对数据进行加密 RSA加密 RSA是一种非对称加密,但是对加密的字符串的长度需要设置.但是字符串的长度是不固定的,而且这种方式的加密,加密的字符串越长,加密的时间越长. pip install rsa rsa.newkeys(256) 256代表加密的位数 256/8=32 就是32个字节,但是源码中32-11=21 也就是最…
1.服务器端目录结构: 1.__init__.py from django.conf import settings from repository import models import importlib from .server import Server class PluginManger(object): def __init__(self): self.plugin_items = settings.PLUGIN_ITEMS self.basic_key = "basic&quo…
1.目录结构 1.服务器端 2.客户端 2.具体代码如下 1.数据库增加两个字段 class Server(models.Model): """ 服务器信息 """ # asset = models.OneToOneField('Asset') server_status_choices = ( (1, '上架'), (2, '在线'), (3, '离线'), (4, '下架'), ) server_status_id = models.Inte…
1.创建硬件资产信息 import json from django.shortcuts import render,HttpResponse from django.views.decorators.csrf import csrf_exempt from django.conf import settings from repository import models from .plugins import PluginManger @csrf_exempt def server(requ…
在对获取资产信息时,简述有四种方案. 1.Agent  (基于shell命令实现) 原理图 Agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库 优点:速度快 缺点:需要为每台服务器部署一个Agent程序 2.Paramiko类 (SSH形式,基于Paramiko模块) 中控机在获取未采集资产信息的服务器(服务器主机名,密码),依赖于Paramiko(py模块)通过SSH方式去获取 优点:无Agent  缺点:速度慢 如果在服务器较少的情况下,可应…
django中间件工作原理 整体流程: 在接受一个Http请求之前的准备 启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器. 服务器根据WSGI协议指定相应的Handler来处理Http请求,并且初始化该Handler,在Django框架中由框架自身负责实现这一个Handler. 此时服务器已处于监听状态,可以接受外界的Http请求 当一个http请求到达服务器的时候 服务器根据WSGI协议从Http请求中提取出必要的参数…
上节疑问: 1.老师我们已经写到global_settings里了,为什么还要写到__init__.py setting 这的作用是为了:整合起两个的组合global_settings和settings 2.导入的时候from lib.config import settings怎么能找到这个settings呢? 导入文件夹的时候它默认会执行里面的__init__.py 3.os.environ['AUTO_CLIENT_SETTINGS'] = "conf.settings"是什么作…