AutoClient

 #settings.py
# ————————01CMDB获取服务器基本信息————————
import os BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))##当前路径 # 采集资产的方式,选项有:agent(默认), salt, ssh
MODE = 'agent' # ————————01CMDB获取服务器基本信息————————

#settings.py

 #base.py
# ————————01CMDB获取服务器基本信息————————
from config import settings #配置文件 class BasePlugin(object):
def __init__(self, hostname=''):
if hasattr(settings, 'MODE'):
self.mode = settings.MODE #采集资产的方式
else:
self.mode = 'agent'#默认,采集资产的方式 def execute(self):
return self.windows() def windows(self):
raise Exception('您必须实现windows的方法')
# ————————01CMDB获取服务器基本信息————————

#base.py

 #response.py
# ————————01CMDB获取服务器基本信息————————
class BaseResponse(object): #提交数据的类型
def __init__(self):
self.status = True #状态
self.message = None #消息
self.data = None #数据内容
self.error = None #错误信息 # ————————01CMDB获取服务器基本信息————————

#response.py

 #auto-client.py
# ————————01CMDB获取服务器基本信息————————
import os
BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#当前路径
print('当前路径:',type(BASEDIR),BASEDIR)
os.path.join(BASEDIR)# Join(转成字符串) from src.scripts import client
if __name__ == '__main__':#让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行
client()
# ————————01CMDB获取服务器基本信息————————

#auto-client.py

 # scripts.py
# ————————01CMDB获取服务器基本信息————————
from src.client import AutoAgent #本地采集模式
from config import settings #配置文件 def client(): #根据配置文件判断采集模式
if settings.MODE == 'agent':
cli = AutoAgent() #本地采集模式
else:
raise Exception('请配置资产采集模式,如:agent、ssh、salt')
cli.process() #执行def process(self):
# ————————01CMDB获取服务器基本信息————————

# scripts.py

 # client.py
# ————————01CMDB获取服务器基本信息————————
from src import plugins #__init__.py
from lib.serialize import Json #转成字符串或者模式 class AutoBase(object):
def process(self):#派生类需要继承此方法,用于处理请求的入口
raise NotImplementedError('您必须实现过程的方法')
class AutoAgent(AutoBase):
def process(self):
server_info = plugins.get_server_info()#获取本地基本信息
server_json = Json.dumps(server_info.data)#json.dumps将 Python 对象编码成 JSON 字符串
print('提交资产信息:',server_json) # ————————01CMDB获取服务器基本信息————————

# client.py

 #__init__.py
# ————————01CMDB获取服务器基本信息————————
from src.plugins.basic import BasicPlugin def get_server_info(hostname=None):
"""
获取服务器基本信息
:param hostname: agent模式时,hostname为空;salt或ssh模式时,hostname表示要连接的远程服务器
:return:
"""
response = BasicPlugin(hostname).execute()#获取基本信息
"""
class BaseResponse(object):
def __init__(self):
self.status = True
self.message = None
self.data = None
self.error = None
"""
return response if __name__ == '__main__':
ret = get_server_info()
# ————————01CMDB获取服务器基本信息————————

#__init__.py

 # basic.py
# ————————01CMDB获取服务器基本信息————————
from .base import BasePlugin #采集资产的方式
from lib.response import BaseResponse #提交数据的类型
import platform #platform模块给我们提供了很多方法去获取操作系统的信息
import wmi#Windows操作系统上管理数据和操作的基础设施
"""
本模块基于windows操作系统,依赖wmi和win32com库,需要提前使用pip进行安装,
我们依然可以通过pip install pypiwin32来安装win32com模块
或者下载安装包手动安装。
""" class BasicPlugin(BasePlugin):
def os_platform(self):#获取系统平台
output=platform.system()
return output.strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
def os_version(self):#获取系统版本
output = wmi.WMI().Win32_OperatingSystem()[0].Caption
return output.strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
def os_hostname(self):#获取主机名
output = wmi.WMI().Win32_OperatingSystem()[0].CSName
return output.strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 def windows(self):
response = BaseResponse()#提交数据的类型
try:
ret = {
'os_platform': self.os_platform(),#系统平台
'os_version': self.os_version(),#系统版本
'hostname': self.os_hostname(),#主机名
}
response.data = ret #字典形式
print('windows服务器基本信息:',response.data)
except Exception as e:
response.status = False#获取信息时出现错误
return response
"""
class BaseResponse(object): #提交数据的类型
def __init__(self):
self.status = True #状态
self.message = None #消息
self.data = None #数据内容
self.error = None #错误信息 """
# ————————01CMDB获取服务器基本信息————————

# basic.py

import wmi
"""
本模块基于windows操作系统,依赖wmi和win32com库,需要提前使用pip进行安装,
我们依然可以通过pip install pypiwin32来安装win32com模块
或者下载安装包手动安装。
"""

 #serialize.py
# ————————01CMDB获取服务器基本信息————————
import json as default_json #轻量级的数据交换格式
from json.encoder import JSONEncoder #JSONEncoder用来将模型转JSON字符串,JSONDecoder是用来将JSON字符串转为模型
from .response import BaseResponse class JsonEncoder(JSONEncoder):
def default(self, o):
if isinstance(o, BaseResponse):#isinstance()函数来判断一个对象是否是一个已知的类型
return o.__dict__ #返回字典
return JSONEncoder.default(self, o) #JSONEncoder用来将模型转JSON字符串,JSONDecoder是用来将JSON字符串转为模型
"""
不是这个类型就不处理,直接返回
class BaseResponse(object):
def __init__(self):
self.status = True #状态
self.message = None #消息
self.data = None #数据内容
self.error = None #错误信息 """
class Json(object):
@staticmethod#返回函数的静态方法
def dumps(response, ensure_ascii=True):
return default_json.dumps(response, ensure_ascii=ensure_ascii, cls=JsonEncoder)#dumps 方法是将 json 的 dict 形式,转换成为字符串 str 类型 # ————————01CMDB获取服务器基本信息————————

#serialize.py

Django项目:CMDB(服务器硬件资产自动采集系统)--01--01CMDB获取服务器基本信息的更多相关文章

  1. Django项目:CMDB(服务器硬件资产自动采集系统)--06--06CMDB测试Linux系统采集硬件数据的命令01

    #base.py # ————————01CMDB获取服务器基本信息———————— from config import settings #配置文件 class BasePlugin(object ...

  2. Django项目:CMDB(服务器硬件资产自动采集系统)--03--03CMDB信息安全API接口交互认证

    #settings.py """ Django settings for AutoCmdb project. Generated by 'django-admin sta ...

  3. Django项目:CMDB(服务器硬件资产自动采集系统)--02--02CMDB将服务器基本信息提交到API接口

    AutoCmdb # urls.py """AutoCmdb URL Configuration The `urlpatterns` list routes URLs t ...

  4. Django项目:CMDB(服务器硬件资产自动采集系统)--12--08CMDB采集硬件数据日志记录

    #settings.py # ————————01CMDB获取服务器基本信息———————— import os BASEDIR = os.path.dirname(os.path.dirname(o ...

  5. Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据

    #settings.py # ————————01CMDB获取服务器基本信息———————— import os BASEDIR = os.path.dirname(os.path.dirname(o ...

  6. Django项目:CMDB(服务器硬件资产自动采集系统)--05--05CMDB采集硬件数据的插件

    #__init__.py # ————————05CMDB采集硬件数据的插件———————— from config import settings import importlib # —————— ...

  7. Django项目:CMDB(服务器硬件资产自动采集系统)--04--04CMDB本地(Agent)模式客户端唯一标识(ID)

    # client.py # ————————01CMDB获取服务器基本信息———————— from src import plugins #__init__.py from lib.serializ ...

  8. Django项目:CMDB(服务器硬件资产自动采集系统)--07--06CMDB测试Linux系统采集硬件数据的命令02

    #settings.py """ Django settings for AutoCmdb project. Generated by 'django-admin sta ...

  9. Django项目:CMDB(服务器硬件资产自动采集系统)--10--06CMDB测试Linux系统采集硬件数据的命令05

    cd /py/AutoClient/bin python3 auto-client.py /usr/local/python3/bin/pip install requests python3 aut ...

随机推荐

  1. thinkphp 范围标签

    范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围. 大理石平台价格 IN和NOTIN 用法: 假设我们中控制器中给id赋值为1: $id = ...

  2. 使用pdf文本域模板生成对应的pdf

    第一步: 下载jar包 <!-- itext的pdf的依赖--> <dependency> <groupId>com.itextpdf</groupId> ...

  3. DELPHI指针的使用

    DELPHI指针的使用 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上.因此,说指针是C语言的灵魂,一点都不为过.同时,这种说法也让很多人产生误解,似乎只有C语言的指针才 ...

  4. 小程序跳坑 --- navigator 和 API中wx.系列的跳转(如 wx.navigateTo、wx.reLaunch等)

    工作之余,想着帮老妈开发个小程序,一是宣传一下她的业务,二是学习使用一下微信小程序的开发,哈哈.在此过程中遇到了navigator跳转的问题,最终还是成功解决了,下面就记录下来,并做个系列总结以作记录 ...

  5. 在windows中用cmd命令执行python无限循环程序如何停止

    在windows中用cmd命令测试python带有无限循环的程序,当想要终止时, 即linux中的Ctrl + D 相似的功能时可以用 Ctrl + Pause Break, 有FN功能键的可能要使用 ...

  6. UNIT对话系统(杂记)

    单轮对话指标: 召回率=机器人能回答的问题数/问题总数 准确率=机器人正确回答的问题数/问题总数 问题解决率=机器成功解决的问题数/问题总数 多轮对话指标: 任务完成率=成功结束的多轮会话数/多轮会话 ...

  7. Mysql图解安装向导

    注:本次安装为解压缩版: 1.设置Mysql环境变量: MYSQL_HOME: D:\Java\MySql\mysql-5.7.9-winx64 PATH: %MYSQL_HOME%\bin; 2.安 ...

  8. 0905NOIP模拟测试赛后总结

    40分rank33.连续爆炸祭. 这次爆炸和心态无关.主要是答题策略出了点问题.T2大众分20.暴搜打表非常强. 拿到题目看到前面人都看pdf,突然想跟风皮一把,就把刚下的doc也转成pdf了hhh ...

  9. LUGOU P1092 虫食算

    传送门 解题思路 刚开始按yzy神犇给的方法写,就是每次要把能算出来的都算出来,结果因为太菜写挂了..后来直接爆搜水过.. #include<iostream> #include<c ...

  10. springboot与安全

    概念: 安全 Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型.他可以实现强大的web安全控制.对于安全控制,我们仅需引入sprin ...