服务端api 对发送来的数据进行处理,并返回结果,首先要创建一个Django项目

第一步,就是写URL路由在分支中写url

api 主路由

from django.conf.urls import url,include
from django.contrib import admin urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include('api.urls')),

api路由

from django.conf.urls import url
from api import views urlpatterns = [ url(r'^asset',views.asset),
]

试图views,试图函数 ,这里我使用 的csrf的忽略校验 和 接收的是PSOT请求,josn 反序列化

from django.views.decorators.csrf import csrf_exempt  
from django.shortcuts import render,HttpResponse,redirect,reverse
from django.views.decorators.csrf import csrf_exempt
import json
# Create your views here.
@csrf_exempt
def asset(request):
print(request.body) #原始数据
print(request.POST) #url编码的格式 "hostname=c1.com&memory=...."
ret =json.loads(request.body.decode('utf-8'))
print(ret)
return HttpResponse("接受成功")

客户端测试 脚本

#!/usr/bin/env python
# -*- coding:utf-8 -*- import requests
import json
def agent():
''' :return:
'''
import subprocess
disk = subprocess.getoutput('dir')
info = {'hostname':'127.0.0.1','cpu':"cpu..",'meorey':'内存','disk':disk}
r1= requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1)
print(r1.text) agent()

服务端接受数据打印成功

客户端接收成功

#####################错误信息  traceback.format_exc 错误堆栈信息

#!/usr/bin/env python
# -*- coding:utf-8 -*- import traceback def f1():
int('asd')
return 123 def run():
try:
ret = f1()
print(ret)
except Exception as e:
# print(e)
ret = traceback.format_exc()
print(ret, type(ret)) run()

单进程执行数据采集函数实例:

def ssh():
r1= requests.get(url='http://127.0.0.1:8000/api/asset') # print(r1.text,type(r1.text)) #返回str 类型
# print(r1.json(),type(r1.json())) #直接反序列化
# print(r1.content,type(r1.content)) #返回bytes 类型
host_list = r1.json()
for host in host_list:
#连接每一台服务器远程执行(ssh ,salt)执行命令拿到资产信息
info = {
'hostname':host,
'disk':'diskinfo',
'cpu':'cpuinfo',
'memory':'memoryinfo'
}
r1 = requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1) ssh()

多线程数据采集实现

#!/usr/bin/env python
# -*- coding:utf-8 -*- import requests
import json
def agent():
''' :return:
'''
import subprocess
disk = subprocess.getoutput('dir')
info = {'hostname':'127.0.0.1','cpu':"cpu..",'meorey':'内存','disk':disk}
r1= requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1)
print(r1.text) def task(host):
#创建任务
# 连接每一台服务器远程执行(ssh ,salt)执行命令拿到资产信息
info = {
'hostname': host,
'disk': 'diskinfo',
'cpu': 'cpuinfo',
'memory': 'memoryinfo'
}
r1 = requests.post(
url='http://127.0.0.1:8000/api/asset',
data=json.dumps(info)
)
print(r1) def ssh():
r1= requests.get(url='http://127.0.0.1:8000/api/asset') # print(r1.text,type(r1.text)) #返回str 类型
# print(r1.json(),type(r1.json())) #直接反序列化
# print(r1.content,type(r1.content)) #返回bytes 类型
host_list = r1.json()
from concurrent.futures import ThreadPoolExecutor
pool = ThreadPoolExecutor(10)
for host in host_list:
#连接每一台服务器远程执行(ssh ,salt)执行命令拿到资产信息
pool.submit(task,host) ssh()

总结:auto_client

    agnet模式:

      1、采集资产信息

      2、使用requests模块发POST请求提交的资产信息  

    ssh模式:

      1、获取未采集的主机列表

      2、远程连接(ssh)上指定的主机,执行命令采集资产信息

      3、使用requests模块发POST请求提交的资产信息

    salt模式:

      1、获取未采集的主机列表

      2、远程连接(salt)上指定的主机,执行命令采集资产信息

      3、使用requests模块发POST请求提交的资产信息

CMDB学习之五服务端api的更多相关文章

  1. .Net分布式异常报警系统-客户端及服务端API

    客户端 客户端的作用就是捕获未处理异常, 发送异常到服务端. 关于捕获未处理异常的方法参考 http://www.cnblogs.com/youring2/archive/2012/04/25/246 ...

  2. 安卓推送——个推服务端api使用误区

    首先你需要在个推开放着平台上注册你的应用,以及获得以下几个必要的值APPID |APPKEY | MASTERSECRET,本文假设你已经完成上述步骤以及完成客户端SDK的集成. 原理 个推服务端ap ...

  3. Identity4实现服务端+api资源控制+客户端请求

    准备写一些关于Identity4相关的东西,最近也比较对这方面感兴趣.所有做个开篇笔记记录一下,以便督促自己下一个技术方案方向 已经写好的入门级别Identity4的服务+api资源访问控制和简单的客 ...

  4. JAVA通过http访问其他服务端API

    项目要实现这么一个功能,用户通过点击按钮,通过axios来访问python的API(算法,java不好做)得到一个结果存储到数据库并且返回到页面. 但是python不是在tomcat上面运行的,所以不 ...

  5. 服务端API 工作经验(没有工作的是体会不到的)

    1.慢慢了解以下内容 [{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},]-- 数据 data 服务端API 状态代码(01代表成功) message ...

  6. C#开发BIMFACE系列6 服务端API之获取文件信息

    在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...

  7. C#开发BIMFACE系列4 服务端API之源上传文件

    在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...

  8. C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...

  9. C#开发BIMFACE系列7 服务端API之获取文件信息列表

    系列目录     [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...

随机推荐

  1. 洛谷2863 [Usaco06JAN]牛的舞会

    题目描述 约翰的N (2 <= N <= 10,000)只奶牛非常兴奋,因为这是舞会之夜!她们穿上礼服和新鞋子,别 上鲜花,她们要表演圆舞. 只有奶牛才能表演这种圆舞.圆舞需要一些绳索和一 ...

  2. Chrome开启无界面浏览模式Python+Windows环境

    环境:Python 3.5.x + Selenium 3.4.3 + Chromedriver 2.30 + Chrome 60 beta版 + WIN7/WIN10 chrome_options = ...

  3. 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用

    首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ...

  4. Connect the Campus (Uva 10397 Prim || Kruskal + 并查集)

    题意:给出n个点的坐标,要把n个点连通,使得总距离最小,可是有m对点已经连接,输入m,和m组a和b,表示a和b两点已经连接. 思路:两种做法.(1)用prim算法时,输入a,b.令mp[a][b]=0 ...

  5. USACO2002 Open:雄伟的山峦

    简要题意: 奶牛们在落基山下避暑,从它们的房子向外望去,可以看到N 座山峰构成的山峦,奶牛发现每座山峰都是等腰三角形,底边长度恰好是高度的两倍.所以山峰的顶点坐标可由两个底部端点求出.设i 座第山峰的 ...

  6. 用iptables抗御SYN Flood攻击

    1         引 言 网络安全是各种网络应用面临的一个首要问题.从网络普及的那天开始,网络犯罪就没有停止过,相反有愈演愈烈之势.研究发现,现今的网络攻击以分布式拒绝服务攻击(DDOS)为主 .其 ...

  7. Android开发当中Parcelable接口的使用

    本文转载于:http://www.2cto.com/kf/201205/132814.html 本文稍微做了些修改 android提供了一种新的类型:Parcel.本类被用作封装数据的容器,封装后的数 ...

  8. RAID信息存放位置!

    今天偶然的机会,客户打电话说有一台DELL T110的服务器换了主板电池RAID信息没了进不去系统了,问我怎么处理,T110的RAID是主板集成的S100的RAID卡(算是软RAID,通过BIOS配置 ...

  9. win10下虚拟机安装XP系统 后无网卡的解决

    Windows 8提供了免费的虚拟机 Hyper-V, 但是在配置 Hyper-V虚拟机的时候经常遇到虚拟机无法上网,本文介绍的是: 原料   Windows 10 Hyper-V Windows X ...

  10. 在Navicat中如何新建数据库和表并做查询

    上一篇文章,小编给大家分享了在Navicat中如何远程连接数据库,没有来得及上车的小伙伴可以戳这篇文章:在Ubuntu14.04中配置mysql远程连接教程.今天小编给大家分享一下如何在Navicat ...