CMDB之数据采集

一. 四种方式
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之数据采集的更多相关文章
- CMDB学习之二数据采集
首先也要调用插件的方式,来写采集数据插件,在src目录下创建一个插件 plugins ,然后在plugins下创建disk.py ,memory.py, network.py等等 src plugin ...
- CMDB学习之三数据采集
判断系统因为是公用的方法,所有要写基类方法使用,首先在插件中创建一个基类 将插件文件继承基类 思路是创建基类使用handler.cmd ,命令去获取系统信息,然后进行判断,然后去执行 磁盘 ,cpu, ...
- 蓝鲸 修改主机名重装后初始化不了cmdb安装不了job + 数据采集流程
1.表象:在部署蓝鲸JOB过程中需要进行RabbitMQ的安装,数据初始化,激活步骤,此问题多发生在此过程 [ root@rbtnodel install)# ./bkcec initdata rab ...
- CMDB项目实战
01-CMDB项目介绍 02-CMDB开发背景 03-CMDB开发目的 04-CMDB资产采集方式之agent 05-CMDB资产采集方式之ssh 06-CMDB资产采集方式之saltstack 07 ...
- CMDB学习之四 ——DEBUG模式
定义一个debug,进行解析调试,到测试文件 配置文件,配置debug模式,定义环境变量, #!/usr/bin/env python # -*- coding:utf-8 -*- import os ...
- CMDB学习之一
CMDB - 配置管理数据库 资产管理 自动化相关的平台(基础 CMDB): 1. 发布系统 2. 监控 3. 配管系统.装机 4. 堡垒机 CMDB的目的: 1. 替代EXCEL资产管理 —— 资产 ...
- cmdb项目-1
1.什么是cmdb 配置管理数据库 ,存储基础设备的各种信息配置等 CMDB可以存储并自动发现整个IT网络上的各种信息,比如一个IT网络上有多少台服务器.多少存储.设备的品牌.资产编号.维护人员.所属 ...
- cmdb客户端代码完善2
目录: 1.面试提问 2.完善采集端代码 3.唯一标识的问题 4.API的验证 1.面试会问到的问题: # 1. 为啥要做CMDB?# - 实现运维自动化, 而CMDB是实现运维自动化的基石# - 之 ...
- cmdb简介
目录: 1.为啥要做cmdb
随机推荐
- Linux运维学习笔记-通配符及正则表达式知识总结
通配符: * 代表所有 ? 任意一个字符 : 两个命令的分隔符 # 注释 | 管道,将|前命令的执行结果作为|后命令的输入 ~ 用户的家目录 - 上一次的目录 $ 变量前面 ...
- trello 项目管理开启卡片图片显示
/********************************************************************************* * trello 项目管理开启卡片 ...
- I.MX6 Manufacturing Tool V2 (MFGTool2) Update Command List (UCL) User Guide translate
Manufacturing Tool V2 (MFGTool2) Update Command List (UCL) User Guide Contents(目录) Contents(目录) ...
- Netty5.x 和3.x、4.x的区别及注意事项(官方翻译)
Netty5.x 和3.x.4.x的区别及注意事项 (官方翻译) 本文档列出了Netty5新版本中值得注意变化和新特性列表.帮助你的应用更好的适应新的版本. 不像Netty3.x和4.x之间的变化 ...
- panabit web认证界面个性化
原理:利用js代码在前端页面进行个性化 1.禁止信息提示 url:http://192.168.0.246:8010/restrict.htm 文件:restrict.png restrict.ht ...
- 解决php收邮件乱码问题
function test($strHead){ if(ereg("=\?.{0,}\?[Bb]\?",$strHead)){ $arrHead=split("=\?.{ ...
- java基础-Map的静态初始化以及Map的遍历等.....................
1.map的静态初始化,以及map遍历的几种方法: package com.cy.test; import java.util.HashMap; import java.util.Iterator; ...
- Java ScriptEngine 解析js
Java ScriptEngine 解析js 1.脚本引擎 ① 通过脚本名称获取: ScriptEngine engine = new ScriptEngineManager().getEn ...
- 我对商业模式O2O的理解
过这个文章不是来吐槽项目经理多麽困难的,而且对商业模式的一点心得和讨论. 在这个公司,从项目建设上讲,老实说贡献不是很大,做项目经理团队带的不好,当然小创业公司本身资源真的非常有限,自己也特别累,有老 ...
- grunt 不是内部或外部命令,也不是可运行的程序或批处理文件
问题1 grunt 不是内部或外部命令,也不是可运行的程序或批处理文件 解决方法: Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. 安装CLI 在继 ...