• 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

  • 相关阅读:
    《C/C++实现Console下的加载进度条模拟[美观版]》
    VSCode六大通用插件真香合集
    视频+图文 String类干货向总结
    视频+图文+动画 详解插入排序(轻松易理解系列)
    【视频+图文】Java经典基础练习题(六):猴子吃桃子问题
    【视频+图文+动画】详解选择排序(轻松易理解系列)
    【视频+图文】Java经典基础练习题(五):键盘输入一个五位数,判断这个数是否为回文数
    【视频+图文+动画】详解冒泡排序(万字长文,超级详细~~)
    详解时间、空间复杂度(内含彩蛋~~)
    【视频+图文】Java经典基础练习题(四):键盘输入一个正整数,获取这个正整数的每一位并将其输出
  • 原文地址:https://www.cnblogs.com/ujq3/p/9219093.html
Copyright © 2020-2023  润新知