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

 

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 ]
# urls.py

 

 

 

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接口————————
# urls.py

 

 

 

 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接口————————
# views.py

 

 

 

 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接口————————
#settings.py

 

 

 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接口————————
# client.py

 

 

 

posted @ 2018-06-23 22:24  颜言  阅读(839)  评论(0编辑  收藏  举报