首页 > 数据库技术 > 详细

CMDB资产采集

时间:2017-07-26 22:55:07      阅读:358      评论:0      收藏:0      [点我收藏+]

Agent(方式)

1:服务器每台都需要安装Agent 达到采集速度快,简单;造成性能损耗
获取每台服务器的资产并有返回值:v=subprocess.getoutput(‘dir‘)或者ipconfig
返回给api  api在进行入库   (api  1.url  2.指定发送数据格式  3.并有返回值给客户端)
2:应用场景:服务较多的公司  
客户端:

import subprocess
v1=subprocess.getoutput(‘ipconfig‘)
# print(v1)
value1=v1[20:30]  #采集到一套资产


v2=subprocess.getoutput(‘dir‘)  #采集到另外一条命令
# print(v2)
value2=v2[0:5]

#连接到数据库,写入到数据库  数据往url上面发送
url="http://127.0.0.1:8000/asset.html"
import requests

response=requests.post(url,data={‘k1‘:value1,‘k2‘:value2})   #数据发送到指定url上 发送完数据有返回值,收到url给返回的信息
print(response.text)
服务端 API:
from app01 import views
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^asset.html$‘,views.asset),
]


from django.shortcuts import render,HttpResponse

# Create your views here.

def asset(request):   #接收用户发来的消息
    if request.method == "POST":
        print(request.POST)
        #并写入数据库
        return HttpResponse(‘1002‘)
    else:
        return HttpResponse(‘1001‘)
#

    

Paramiko(ssh方式)

通过远程执行一条命令 导入paramiko模块
每个服务器都需要安装SSH远程
流程:中控机去服务器采集信息,采集完的信息返回给中控机 然后中控机把信息又返回给api,api收到消息并返回给中控机
采集的资产信息放在中控机(paramiko模块)v=subprocess.getoutget(‘ipconfig‘) 拿到的是中控机的采集信息
中控机在把信息返回给api,api在进行入库
优点:无Agent 缺点:网络慢
应用场景:服务器较少的公司  
技术分享
############## Paramiko ,中控机放一份 #############
"""
- 远程连接服务器,执行命令,获取结果
- 将结果发送API
"""
import paramiko
#创建SSH对象
ssh=paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname=192.168.24.129,port=22,username=root,password=123456)

#执行命令
stdin,stdout,stderr = ssh.exec_command(ls)   #表示是要去连接,连接上执行命令

#获取命令结果
result = stdout.read()

#关闭连接
ssh.close()

#并拿到结果
value=result[0:10]
print(value)
import requests

url = "http://127.0.0.1:8000/asset.html"
response=requests.post(url,data={k1:value,k2:v2})
print(response.text)
ssh远程连接
技术分享
from app01 import views
urlpatterns = [
    url(r^admin/, admin.site.urls),
    url(r^asset.html$,views.asset),
]


from django.shortcuts import render,HttpResponse

# Create your views here.

def asset(request):   #接收用户发来的消息
    if request.method == "POST":
        print(request.POST)
        #并写入数据库
        return HttpResponse(1002)
    else:
        return HttpResponse(1001)
#
API

 

SaltStack

1. 安装和配置

技术分享
"""
1. 安装salt-master
    yum install salt-master
2. 修改配置文件:vim /etc/salt/master
    interface: 0.0.0.0    # 表示Master的IP 本地ip
3. 启动
    service salt-master restart

(切记 一定关防火墙 systemctl stop firewalld)
"""
master
技术分享
"""
1. 安装salt-minion
    yum install salt-minion

2. 修改配置文件 vim /etc/salt/minion
    master: 10.211.55.4           # master的地址
    或
    master:
        - 10.211.55.4
        - 10.211.55.5
    random_master: True

    id: c2.salt.com                    # 客户端在salt-master中显示的唯一ID
3. 启动
    service salt-minion restart

切记 一定关防火墙 systemctl stop firewalld)

"""
minion

2. 授权

技术分享
在master里面输入
salt -key -L 查看已授权和未授权
salt -key -A 手动授权
salt-key -r  salve_id      # 拒绝指定id的salve
salt-key -d  salve_id      # 删除指定id的salve
master

3. 执行命令

 在master服务器上对salve进行远程操作

技术分享
salt c2.salt.com cmd.run  ifconfig
salt ‘*’ cmd.fun ls
基于shell命令
技术分享
import salt.client
local = salt.client.LocalClient()
result = local.cmd(c2.salt.com, cmd.run, [ifconfig])
基于Salt的API

 

CMDB资产采集

原文:http://www.cnblogs.com/niejinmei/p/7242224.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!