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

Posted 颜言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

 

 

以上是关于Django项目:CMDB(服务器硬件资产自动采集系统)--02--02CMDB将服务器基本信息提交到API接口的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

硬件资产管理系统总结