資產信息之收集資產代碼流程,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加密

 數據庫表設計

相關文章
相關標籤/搜索