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
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 安裝
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')
數據庫表設計