一. 四种方式

1. Agent方式

api
- URL
- 发送数据格式
- 返回值
agent
- 采集数据,发送数据
好处:
- 简单
- 采集速度快,响应速度快
坏处:
- 每台agent装的插件多,性能损耗严重
- 更新需要更新每台agent服务器
####server

from django.shortcuts import render,HttpResponse

# Create your views here.

def asset(request):
if request.method == "POST":
print(request.POST)
# 写入到数据
return HttpResponse('')
else:
return HttpResponse('姿势不对') ####agent
import subprocess
import requests v1 = subprocess.getoutput("ifconfig")
value1 = (v1[51:55]) v2 = subprocess.getoutput("dir")
value2 = (v2[14:20]) url = "http://127.0.0.1:8000/asset.html" response = requests.post(url,data={"k1":value1,"k2":value2})
print(response.text)

代码在此

2. ssh方式

#ssh方式
- fabric(本质是Paramiko)
- ansible(本质是Paramiko)
- Paramiko #Paramiko模块 原理: Paramiko中控机远程连接服务器,执行命令,获取结果,将结果发送Api
应用场景:服务器少,ssh可以忽略 好处
- 无需Agent
坏处
- 连接客户机时每次需要ssh连接,速度慢 http://www.cnblogs.com/wupeiqi/articles/5095821.html

ssh方式:

##server

from django.shortcuts import render,HttpResponse

# Create your views here.

def asset(request):
if request.method == "POST":
print(request.POST)
# 写入到数据
return HttpResponse('')
else:
return HttpResponse('姿势不对') ##Paramiko中控机 import paramiko
import requests # 创建SSH对象
ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器
ssh.connect(hostname='10.37.129.3', port=22, username='root', password="") # 执行命令
stdin, stdout, stderr = ssh.exec_command('ifconfig') # 获取命令结果
result = stdout.read()[0:20] # 关闭连接
ssh.close() url = "http://127.0.0.1:8000/asset.html" response = requests.post(url,data={"k1":result})
print(response.text)

3.saltstack方式

在master上运行:

shell >> salt 'c2.salt.com' cmd.run  'ifconfig'

基于Salt的api方式:

利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令

master端想要执行类似 salt '*' cmd.run 'uptime' 在saltclient里可以这么写

master
>>
import salt.client
local = salt.client.LocalClient()
local.cmd('*', 'cmd.run', ['uptime'])

得到jid可以通过get_cache_returns(jid)方法来获取执行结果,在没有执行完成以前是为空的所以可以写一个while来一直读取结果直到读取到或者超出规定时间为止

import salt.client
local = salt.client.LocalClient()
t =
jid = local.cmd_async('*', 'cmd.run', ['uptime'])
while not local.get_cache_returns(jid):
time.sleep()
if t == :
print 'Connection Failed!'
break
else:
t+=
print local.get_cache_returns(jid)

minion端可以用来直接在minions上执行命令或者也可以用来写returnner的时候获取minion的grain信息等

import salt.client
caller = salt.client.Caller()
caller.sminion.functions['cmd.run']('ls -l')

获取grains的信息

import salt.client
caller = salt.client.Caller()
caller.sminion.functions['grains.items'] #grains.items代表获取全部的grains信息
caller.sminion.functions['grains.item']('os') #想要特定的grains信息用grains.item然后在后面指定

CMDB之数据采集的更多相关文章

  1. CMDB学习之二数据采集

    首先也要调用插件的方式,来写采集数据插件,在src目录下创建一个插件 plugins ,然后在plugins下创建disk.py ,memory.py, network.py等等 src plugin ...

  2. CMDB学习之三数据采集

    判断系统因为是公用的方法,所有要写基类方法使用,首先在插件中创建一个基类 将插件文件继承基类 思路是创建基类使用handler.cmd ,命令去获取系统信息,然后进行判断,然后去执行 磁盘 ,cpu, ...

  3. 蓝鲸 修改主机名重装后初始化不了cmdb安装不了job + 数据采集流程

    1.表象:在部署蓝鲸JOB过程中需要进行RabbitMQ的安装,数据初始化,激活步骤,此问题多发生在此过程 [ root@rbtnodel install)# ./bkcec initdata rab ...

  4. CMDB项目实战

    01-CMDB项目介绍 02-CMDB开发背景 03-CMDB开发目的 04-CMDB资产采集方式之agent 05-CMDB资产采集方式之ssh 06-CMDB资产采集方式之saltstack 07 ...

  5. CMDB学习之四 ——DEBUG模式

    定义一个debug,进行解析调试,到测试文件 配置文件,配置debug模式,定义环境变量, #!/usr/bin/env python # -*- coding:utf-8 -*- import os ...

  6. CMDB学习之一

    CMDB - 配置管理数据库 资产管理 自动化相关的平台(基础 CMDB): 1. 发布系统 2. 监控 3. 配管系统.装机 4. 堡垒机 CMDB的目的: 1. 替代EXCEL资产管理 —— 资产 ...

  7. cmdb项目-1

    1.什么是cmdb 配置管理数据库 ,存储基础设备的各种信息配置等 CMDB可以存储并自动发现整个IT网络上的各种信息,比如一个IT网络上有多少台服务器.多少存储.设备的品牌.资产编号.维护人员.所属 ...

  8. cmdb客户端代码完善2

    目录: 1.面试提问 2.完善采集端代码 3.唯一标识的问题 4.API的验证 1.面试会问到的问题: # 1. 为啥要做CMDB?# - 实现运维自动化, 而CMDB是实现运维自动化的基石# - 之 ...

  9. cmdb简介

    目录: 1.为啥要做cmdb

随机推荐

  1. # 20155327 2016-2017-4 《Java程序设计》第8周学习总结

    20155327 2016-2017-4 <Java程序设计>第7周学习总结 教材学习内容总结 了解NIO NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以让你设定 ...

  2. person小项目

    所用的IDE为idea,数据库用的是Navicat for MySQL. 好了,开始正题,今天要做person小项目,有以下几个步骤: Navicat for MySQL数据库的构建,以及如何建per ...

  3. Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32)

    本文将介绍 Windows 系统中高 DPI 开发的基础知识.由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中:所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容 ...

  4. Fortify SCA 分析代码漏洞全解

    上次介绍了用FindBugs辅助分析代码漏洞.这次换了一个工具:Fortify SCA Demo 4.0.0.Fortify是一个在安全方面挺出名的公司,这里就不多说了.先介绍一下主角:Fortify ...

  5. Spring4源码解析:BeanDefinition架构及实现

    一.架构图 首先共同看下总体的 Java Class Diagrams 图: 二.具体类实现 2.1 AttributeAccessor 接口定义了一个通用的可对任意对象获取.修改等操作元数据的附加契 ...

  6. XiaoMi Interview Log

    面试题目 PHP 弱类型 实现? COW 写时复制 实现? COW的时候内存的变化 12 $a = $b = 1;$b = 2; 的内存变化 ? 提供一个rand()函数[函数输出0 - 正无穷] 想 ...

  7. Oracle.DataAccess.dll 部署安装

    Oracle.DataAccess.dll 要拷贝到项目发布目录 项目发布的时候,还必须要拷贝以下几个文件在运行目录1.oci.dll 2.oraociicus11.dll 3.OraOps11w.d ...

  8. unity代码添加动画,并传参数

    测试界面 button一个 sprite一个 测试代码 public class BgObject : MonoBehaviour { void Start() { List<string> ...

  9. emacs之配置7,tabbar插件

    emacsConfig/tabbar-setting.el (require 'tabbar) (tabbar-mode ) (global-set-key (kbd "<M-up&g ...

  10. linux命令killall 、kill 、pkill 命令详解

    转自:http://www.cnblogs.com/rsky/p/4886043.html killall 命令 Linux系统中的killall命令用于杀死指定名字的进程(kill processe ...