标签:stat .com sel ted json bdc get 模式 att
AutoClient
1 #settings.py 2 # ————————01CMDB获取服务器基本信息———————— 3 import os 4 5 BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))##当前路径 6 7 # 采集资产的方式,选项有:agent(默认), salt, ssh 8 MODE = ‘agent‘ 9 10 # ————————01CMDB获取服务器基本信息————————
1 #base.py 2 # ————————01CMDB获取服务器基本信息———————— 3 from config import settings #配置文件 4 5 class BasePlugin(object): 6 def __init__(self, hostname=‘‘): 7 if hasattr(settings, ‘MODE‘): 8 self.mode = settings.MODE #采集资产的方式 9 else: 10 self.mode = ‘agent‘#默认,采集资产的方式 11 12 def execute(self): 13 return self.windows() 14 15 def windows(self): 16 raise Exception(‘您必须实现windows的方法‘) 17 # ————————01CMDB获取服务器基本信息————————
1 #response.py 2 # ————————01CMDB获取服务器基本信息———————— 3 class BaseResponse(object): #提交数据的类型 4 def __init__(self): 5 self.status = True #状态 6 self.message = None #消息 7 self.data = None #数据内容 8 self.error = None #错误信息 9 10 # ————————01CMDB获取服务器基本信息————————
1 #auto-client.py 2 # ————————01CMDB获取服务器基本信息———————— 3 import os 4 BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#当前路径 5 print(‘当前路径:‘,type(BASEDIR),BASEDIR) 6 os.path.join(BASEDIR)# Join(转成字符串) 7 8 from src.scripts import client 9 if __name__ == ‘__main__‘:#让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行 10 client() 11 # ————————01CMDB获取服务器基本信息————————
1 # scripts.py 2 # ————————01CMDB获取服务器基本信息———————— 3 from src.client import AutoAgent #本地采集模式 4 from config import settings #配置文件 5 6 def client(): #根据配置文件判断采集模式 7 if settings.MODE == ‘agent‘: 8 cli = AutoAgent() #本地采集模式 9 else: 10 raise Exception(‘请配置资产采集模式,如:agent、ssh、salt‘) 11 cli.process() #执行def process(self): 12 # ————————01CMDB获取服务器基本信息————————
1 # client.py 2 # ————————01CMDB获取服务器基本信息———————— 3 from src import plugins #__init__.py 4 from lib.serialize import Json #转成字符串或者模式 5 6 class AutoBase(object): 7 def process(self):#派生类需要继承此方法,用于处理请求的入口 8 raise NotImplementedError(‘您必须实现过程的方法‘) 9 class AutoAgent(AutoBase): 10 def process(self): 11 server_info = plugins.get_server_info()#获取本地基本信息 12 server_json = Json.dumps(server_info.data)#json.dumps将 Python 对象编码成 JSON 字符串 13 print(‘提交资产信息:‘,server_json) 14 15 # ————————01CMDB获取服务器基本信息————————
1 #__init__.py 2 # ————————01CMDB获取服务器基本信息———————— 3 from src.plugins.basic import BasicPlugin 4 5 def get_server_info(hostname=None): 6 """ 7 获取服务器基本信息 8 :param hostname: agent模式时,hostname为空;salt或ssh模式时,hostname表示要连接的远程服务器 9 :return: 10 """ 11 response = BasicPlugin(hostname).execute()#获取基本信息 12 """ 13 class BaseResponse(object): 14 def __init__(self): 15 self.status = True 16 self.message = None 17 self.data = None 18 self.error = None 19 """ 20 return response 21 22 if __name__ == ‘__main__‘: 23 ret = get_server_info() 24 # ————————01CMDB获取服务器基本信息————————
1 # basic.py 2 # ————————01CMDB获取服务器基本信息———————— 3 from .base import BasePlugin #采集资产的方式 4 from lib.response import BaseResponse #提交数据的类型 5 import platform #platform模块给我们提供了很多方法去获取操作系统的信息 6 import wmi#Windows操作系统上管理数据和操作的基础设施 7 8 class BasicPlugin(BasePlugin): 9 def os_platform(self):#获取系统平台 10 output=platform.system() 11 return output.strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 12 def os_version(self):#获取系统版本 13 output = wmi.WMI().Win32_OperatingSystem()[0].Caption 14 return output.strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 15 def os_hostname(self):#获取主机名 16 output = wmi.WMI().Win32_OperatingSystem()[0].CSName 17 return output.strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 18 19 def windows(self): 20 response = BaseResponse()#提交数据的类型 21 try: 22 ret = { 23 ‘os_platform‘: self.os_platform(),#系统平台 24 ‘os_version‘: self.os_version(),#系统版本 25 ‘hostname‘: self.os_hostname(),#主机名 26 } 27 response.data = ret #字典形式 28 print(‘windows服务器基本信息:‘,response.data) 29 except Exception as e: 30 response.status = False#获取信息时出现错误 31 return response 32 """ 33 class BaseResponse(object): #提交数据的类型 34 def __init__(self): 35 self.status = True #状态 36 self.message = None #消息 37 self.data = None #数据内容 38 self.error = None #错误信息 39 40 """ 41 # ————————01CMDB获取服务器基本信息————————
1 #serialize.py 2 # ————————01CMDB获取服务器基本信息———————— 3 import json as default_json #轻量级的数据交换格式 4 from json.encoder import JSONEncoder #JSONEncoder用来将模型转JSON字符串,JSONDecoder是用来将JSON字符串转为模型 5 from .response import BaseResponse 6 7 class JsonEncoder(JSONEncoder): 8 def default(self, o): 9 if isinstance(o, BaseResponse):#isinstance()函数来判断一个对象是否是一个已知的类型 10 return o.__dict__ #返回字典 11 return JSONEncoder.default(self, o) #JSONEncoder用来将模型转JSON字符串,JSONDecoder是用来将JSON字符串转为模型 12 """ 13 不是这个类型就不处理,直接返回 14 class BaseResponse(object): 15 def __init__(self): 16 self.status = True #状态 17 self.message = None #消息 18 self.data = None #数据内容 19 self.error = None #错误信息 20 21 """ 22 class Json(object): 23 @staticmethod#返回函数的静态方法 24 def dumps(response, ensure_ascii=True): 25 return default_json.dumps(response, ensure_ascii=ensure_ascii, cls=JsonEncoder)#dumps 方法是将 json 的 dict 形式,转换成为字符串 str 类型 26 27 # ————————01CMDB获取服务器基本信息————————
Django项目:CMDB(服务器硬件资产自动采集系统)--01--01CMDB获取服务器基本信息
标签:stat .com sel ted json bdc get 模式 att
原文地址:https://www.cnblogs.com/ujq3/p/9218798.html