资产信息之收集资产代码流程,API的一个认证,数据库表的设计

收集资产代码流程

  1.起初咱们些的代码是面条式的一堆的逻辑判断。linux

    后来经过了不断的优化升级实现了一个3种方案都支持的CMDB系统,咱们用哪一种方案只须要在配置文件里修改一下设置就好了。git

    同时咱们借鉴了django的中间件设置还实现了可插拔式的功能,这个可插拔式针对的是咱们要收集的某些硬件信息,只须要注释一下,就能够达到不用搜集了。github

  2.流程:  1.settings: MODE----->肯定哪一种方案(【3个方案py文件】)redis

                 肯定哪一种脚本(【agent脚本,ssh(paramiko),saltstack】)本质功能调命令行数据库

           可插拔配置---->(须要收集的硬件信息【每一个硬件1个py文件】)django

MODE='agent' #方案一 'agent', 方案二 'ssh',方案三 'salt'

DEBUG=True
#可插拔配置
PLUGINS_DICT={
    'basic':'src.data.basic.Basic',
    'board':'src.data.board.Board',
    'cpu':'src.data.cpu.Cpu',
    'disk':'src.data.disk.Disk',
    'memory':'src.data.memory.Memory',
#  'nic':'src.data.nic.Nic',
}

 

        2.for循环硬件配置,传入方法:执行相应硬件的linux命令 拿到咱们须要收集的信息 服务器

{'basic': {'status': 10000, 'data': {'os_platform': 'linux', 'os_version': 'CentOS release 6.6 (Final)\nKernel \r on an \\m', 'hostname': 'c2.com'}}}

#注意:ssh(hostme  密钥或服务器用户名密码 ),salt方式只须要hostnameapp

#我写了一个类方法来for循环配置文件,一个方法拿到脚本方法 ,init定义了hostname,root,pwd等    ssh

API的一个认证

 token认证:ide

  过滤2部分:1.无关的请求 2.用户请求

        token格式    asadasdasd|1321151.21312

        经过格式过滤

        经过time时间设置token的有效时间

        经过随机字符串认证token

        经过了 存入redis(无限存?)只容许登录1次设置过时时间

        AES数据加密

 

1.pip3 install pycrypto
2.pip3 install wheel
3.https://github.com/sfbahr/PyCrypto-Wheels 下载pycrypto-2.6.1-cp35-none-win32
4.cd 到下载目录 pip3 install pycrypto 安装
win系统AES加密模块安装

 

from Crypto.Cipher import AES
def encrypt(message):
    key = b'dfdsdfsasdfdsdfs'
    cipher = AES.new(key, AES.MODE_CBC, key)
    ba_data = bytearray(message,encoding='utf-8')
    v1 = len(ba_data)
    v2 = v1 % 16
    if v2 == 0:
        v3 = 16
    else:
        v3 = 16 - v2
    for i in range(v3):
        ba_data.append(v3)
    final_data = ba_data
    msg = cipher.encrypt(final_data) # 要加密的字符串,必须是16个字节或16个字节的倍数
    return msg
def decrypt(msg):
    key = b'dfdsdfsasdfdsdfs'
    cipher = AES.new (key, AES.MODE_CBC, key)
    result = cipher.decrypt (
        msg)  # result = b'\xe8\xa6\x81\xe5\x8a\xa0\xe5\xaf\x86\xe5\x8a\xa0\xe5\xaf\x86\xe5\x8a\xa0sdfsd\t\t\t\t\t\t\t\t\t'
    data = result[0:-result[-1]]
    return str (data, encoding='utf-8')
AES加密

 数据库表设计

相关文章
相关标签/搜索