zoukankan      html  css  js  c++  java
  • 资产信息之收集资产代码流程,API的一个认证,数据库表的设计

    收集资产代码流程

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

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

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

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

                     确定哪种脚本(【agent脚本,ssh(paramiko),saltstack】)本质功能调命令行

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

    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)
    Kernel 
     on an \m', 'hostname': 'c2.com'}}}

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

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

    API的一个认证

     token认证:

      过滤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'xe8xa6x81xe5x8axa0xe5xafx86xe5x8axa0xe5xafx86xe5x8axa0sdfsd									'
        data = result[0:-result[-1]]
        return str (data, encoding='utf-8')
    AES加密

     数据库表设计

  • 相关阅读:
    小小知识点(二)——如何修改win10 的C盘中用户下的文件夹名称
    Day15 Python基础之logging模块(十三)
    Day14 Python基础之os/sys/hashlib模块(十二)
    Day13 Python基础之time/datetime/random模块一(十一)
    Day12 Python基础之生成器、迭代器(高级函数)(十)
    Day11 Python基础之装饰器(高级函数)(九)
    火狐HACK
    javascript操作cookie
    <!DOCTYPE>标签的定义与用法
    前端性能优化
  • 原文地址:https://www.cnblogs.com/3sss-ss-s/p/10256942.html
Copyright © 2011-2022 走看看