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 ...
随机推荐
- tensorflow 问题库
1.module 'tensorflow.python.ops.nn' has no attribute 'rnn_cell' 将tf.nn.rnn_cell ->tf.contrib.rnn
- Leaflet绘制多边形
drawPolygon = () => { let points = []; const polygon = new L.Polygon(points); this.map.addLayer(p ...
- BNUOJ 4049 四叉树
四叉树 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class name: Ma ...
- iOS 7 UI 过渡指南 - 支持续 iOS 6(iOS 7 UI Transition Guide - Supporting iOS 6)
iOS 7 UI Transition Guide Preparing for Transition Before You Start Scoping the Project Supporting i ...
- Android使用token维持登陆状态的方法
什么是token token(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地.在以后的网络请求时,客户端先查询本地的token,如果有 ...
- WebApi 参数请求
收藏来源于:http://www.cnblogs.com/babycool/p/3922738.html 路由配置到id post多个参数 ➕前缀 FromBody 参数为实体 对于一般前台页面发起的 ...
- jquery easyui 输入框 禁止输入负数 设置属性data-options="min:0,required:true"
jquery easyui 输入框 禁止输入负数 设置属性data-options="min:0,required:true" <input id="days& ...
- 如何更改AD域安全策略-密码必须符合复杂性要求
通常我们在域系统-管理工具上面是找不到“域安全策略”的,我们只能找到“本地安全策略”,而更改“本地安全策略”是不会对域产生任何的作用的.下面这个步骤教你如何找到“域安全策略” 1.Start(开始)– ...
- noip 2018 day1 T1 铺设道路 贪心
Code: #include<cstdio> using namespace std; int main() { int last=0,ans=0; int n;scanf("% ...
- docker升级&加速器配置
默认使用yum或者apt安装的docker版本较老,可以通过以下方式进行升级: 1.卸载旧版本 [root@CentOS702 ~]# centos 7.3卸载docker[root@CentOS70 ...