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
随机推荐
- Windows环境下 PyQt5 如何安装MySql驱动 (PyQt5连接MYSQL时显示Driver not loaded解决方案)
参考文章: https://blog.csdn.net/qq_38198744/article/details/80261695 前文说过如何在Ubuntu环境下 为PyQt5 安装MySql驱动, ...
- 常用SQL语句积累
--批量设置表中某字段为固定值 update dbo.LampList set LampGroupAddress=ISNULL(LampGroupAddress,'')+1 --批量设置表中某字段为N ...
- Bakery
Masha wants to open her own bakery and bake muffins in one of the n cities numbered from 1 to n. The ...
- C#调用OCR组件识别图片文字
图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号. 图片识别的用途:很多人用它去破解网站的验证码,用于达到自动刷票或者是批量 ...
- php如何获取服务器所在的时区
//获取默认时区echo date_default_timezone_get(); //将时区设置为中国date_default_timezone_set("PRC"); //将时 ...
- 【python】函数名存在变量中
变量函数:意思就是将函数名存在变量中,然后根据变量值动态的调用需要的函数. LOGIN = 'xxxx' PASSWD = "xxx" URL = 'xxxxx' def hand ...
- Appcan、apicloud、HBuilder 不同之处解析
来源:http://www.mamicode.com/info-detail-1129829.html 现在Hybrid app是一中非常火热的开发模式,在国内对应的开发工具也乱象丛生,有WeX5.c ...
- 谜一样的jquery之$选择器
jquery是一个强大的js类库,提供了很多便利的操作方法并兼容不同的浏览器,一旦使用便欲罢不能,根本停不下来,今天我们就来解读一下这个神秘的jquery源代码. 前几天思考再三,自己尝试着封装了一下 ...
- VS2017开发Linux平台上的程序
重装系统后安装VS2015时卡住了,于是试试看VS2017怎样,听说还支持调Linux.发现VS2017跟12/13/15又有了新的飞跃,竟然支持模块化下载,对于我这种主要写C++简直是个福音,勾了L ...
- C语言课程设计——电影院订票系统
1. 课题简介 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户登录系统后,实现电影放映厅信息管理和电 ...