AutoCmdb
1 # urls.py 2 """AutoCmdb URL Configuration 3 4 The `urlpatterns` list routes URLs to views. For more information please see: 5 https://docs.djangoproject.com/en/2.0/topics/http/urls/ 6 Examples: 7 Function views 8 1. Add an import: from my_app import views 9 2. Add a URL to urlpatterns: path('', views.home, name='home') 10 Class-based views 11 1. Add an import: from other_app.views import Home 12 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 13 Including another URLconf 14 1. Import the include() function: from django.urls import include, path 15 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 16 """ 17 from django.contrib import admin 18 from django.urls import path 19 20 # ————————02CMDB将服务器基本信息提交到API接口———————— 21 from django.conf.urls import url 22 from django.conf.urls import include 23 # ————————02CMDB将服务器基本信息提交到API接口———————— 24 25 urlpatterns = [ 26 path('admin/', admin.site.urls), 27 28 # ————————02CMDB将服务器基本信息提交到API接口———————— 29 url(r'^api/', include('api.urls')), 30 # ————————02CMDB将服务器基本信息提交到API接口———————— 31 32 ]
1 # urls.py 2 # ————————02CMDB将服务器基本信息提交到API接口———————— 3 from django.conf.urls import url 4 from api import views 5 6 urlpatterns = [ 7 url(r'^asset$', views.AssetView.as_view()), 8 ] 9 # ————————02CMDB将服务器基本信息提交到API接口————————
1 from django.shortcuts import render 2 3 # Create your views here. 4 5 # views.py 6 7 # ————————02CMDB将服务器基本信息提交到API接口———————— 8 import json #轻量级的文本数据交换格式 9 from django.views import View 10 from django.views.decorators.csrf import csrf_exempt #和HTML的{% csrf_token %}作用一样 11 from django.utils.decorators import method_decorator #安全通过 'django.middleware.csrf.CsrfViewMiddleware', 12 from django.http import JsonResponse#这个类是HttpRespon的子类 13 class AssetView(View):# http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] 14 @method_decorator(csrf_exempt)#和HTML的{% csrf_token %}作用一样,安全通过 'django.middleware.csrf.CsrfViewMiddleware', 15 def dispatch(self, request, *args, **kwargs): 16 return super(AssetView, self).dispatch(request, *args, **kwargs) 17 def post(self, request, *args, **kwargs):#接受客户端到信息 18 server_info = json.loads(request.body.decode('utf-8')) 19 print('获取到的信息: ',type(server_info),server_info) 20 server_info = json.loads(server_info)#把字符串转换成字典 21 print('转换后的信息: ',type(server_info),server_info) 22 hostname = server_info['hostname'] 23 print('主机名',hostname) 24 ret = {'code': 1000, 'message': '[%s]更新完成' % hostname}#返回到客户端到信息 25 print(ret) 26 return JsonResponse(ret)#这个类是HttpRespon的子类 27 # ————————02CMDB将服务器基本信息提交到API接口————————
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获取服务器基本信息———————— 11 12 # ————————02CMDB将服务器基本信息提交到API接口———————— 13 # 资产信息API 14 ASSET_API = "http://127.0.0.1:8000/api/asset" 15 # ————————02CMDB将服务器基本信息提交到API接口————————
1 # client.py 2 # ————————01CMDB获取服务器基本信息———————— 3 from src import plugins #__init__.py 4 from lib.serialize import Json #转成字符串或者模式 5 6 # ————————02CMDB将服务器基本信息提交到API接口———————— 7 import requests #伪造页面访问 8 from config import settings #文件配置 9 # ————————02CMDB将服务器基本信息提交到API接口———————— 10 11 class AutoBase(object): 12 13 # ————————02CMDB将服务器基本信息提交到API接口———————— 14 def __init__(self): 15 self.asset_api = settings.ASSET_API #ASSET_API = "http://127.0.0.1:8000/api/asset" 16 def post_asset(self, msg):#post方式向API接口提交资产信息 17 status = True#获取到信息 18 try: 19 response = requests.post( 20 url=self.asset_api, 21 json=msg 22 ) 23 except Exception as e: 24 response = e 25 status = False #获取信息时出现错误 26 print(response.json()) 27 # ————————02CMDB将服务器基本信息提交到API接口———————— 28 29 def process(self):#派生类需要继承此方法,用于处理请求的入口 30 raise NotImplementedError('您必须实现过程的方法') 31 32 class AutoAgent(AutoBase): 33 def process(self): 34 server_info = plugins.get_server_info()#获取本地基本信息 35 server_json = Json.dumps(server_info.data)#json.dumps将 Python 对象编码成 JSON 字符串 36 print('提交资产信息:',server_json) 37 # ————————01CMDB获取服务器基本信息———————— 38 39 # ————————02CMDB将服务器基本信息提交到API接口———————— 40 self.post_asset(server_json)# post方式向接口提交资产信息 41 # ————————02CMDB将服务器基本信息提交到API接口————————