CMDB学习之五服务端api
服务端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的更多相关文章
- .Net分布式异常报警系统-客户端及服务端API
客户端 客户端的作用就是捕获未处理异常, 发送异常到服务端. 关于捕获未处理异常的方法参考 http://www.cnblogs.com/youring2/archive/2012/04/25/246 ...
- 安卓推送——个推服务端api使用误区
首先你需要在个推开放着平台上注册你的应用,以及获得以下几个必要的值APPID |APPKEY | MASTERSECRET,本文假设你已经完成上述步骤以及完成客户端SDK的集成. 原理 个推服务端ap ...
- Identity4实现服务端+api资源控制+客户端请求
准备写一些关于Identity4相关的东西,最近也比较对这方面感兴趣.所有做个开篇笔记记录一下,以便督促自己下一个技术方案方向 已经写好的入门级别Identity4的服务+api资源访问控制和简单的客 ...
- JAVA通过http访问其他服务端API
项目要实现这么一个功能,用户通过点击按钮,通过axios来访问python的API(算法,java不好做)得到一个结果存储到数据库并且返回到页面. 但是python不是在tomcat上面运行的,所以不 ...
- 服务端API 工作经验(没有工作的是体会不到的)
1.慢慢了解以下内容 [{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},{xx:xxx,xx:xxx},]-- 数据 data 服务端API 状态代码(01代表成功) message ...
- C#开发BIMFACE系列6 服务端API之获取文件信息
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...
- C#开发BIMFACE系列4 服务端API之源上传文件
在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...
- C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...
- C#开发BIMFACE系列7 服务端API之获取文件信息列表
系列目录 [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...
随机推荐
- 常用模块(hashlib、suprocess、configparser)
hashlib模块 hash是一种接受不了内容的算法,(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算 ...
- [codewars_python]Best travel
Instructions John and Mary want to travel between a few towns A, B, C ... Mary has on a sheet of pap ...
- python中的装饰器decorator
python中的装饰器 装饰器是为了解决以下描述的问题而产生的方法 我们在已有的函数代码的基础上,想要动态的为这个函数增加功能而又不改变原函数的代码 例如有三个函数: def f1(x): retur ...
- CodeForces 337A Puzzles
Puzzles Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Origina ...
- COGS——T2084. Asm.Def的基本算法
http://cogs.pro/cogs/problem/problem.php?pid=2084 ★☆ 输入文件:asm_algo.in 输出文件:asm_algo.out 简单对比时间 ...
- 局部特化 & 特化
注意,显式特化不是一个模板.如果是类型跟显式特化一样,那么不是实例化. 显式特化类的函数,不需要再加template,因为不是模板方法. 特化类的函数跟模板类不一定要一样,但是一样更好. 不支持局部特 ...
- javaEE之-------统计站点刷新量
每一个站点都有自己的统计訪问量,可是少不了server会出现意外情况,(如断电..) 所以就须要我们在站点挂机的前段时间将这个数据存起来. 我们就须要用到站点最大的容器,application,我们採 ...
- [Python] Indexing An Array With Another Array with numpy
NumPy Reference: Indexing Integer array indexing: Select array elements with another array def index ...
- 赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印
上一篇已经介绍了Android种Bitmap和Canvas的使用,以下我们来写一个详细实例 http://blog.csdn.net/zhaoyazhi2129/article/details/321 ...
- 流水线技术原理和Verilog HDL实现
所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时 ...