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 ]
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接口————————
以上是关于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接口交互认证