CMDB

CMDB实现的四种方式

方式一   Agent方式

#本质就是在各个服务器上部署Agent脚本,执行subprocess.getoutput()命令,然后将每台机器上的执行结果,返回给API,通过数据的筛选,存入数据库
优点:速度快
缺点:需要每台服务器部署一个Agent

方式二、ssh类实现方式(基于Paramiko模块)

中控机通过Paramiko模块(py模块)登陆到各个服务器上,然后执行命令的方式取获取各个服务器上的信息,中控机把服务器的信息发送给API,对数据进行处理,存入数据库
#优点:不需要各个服务器部署Agent
#缺点:需要登陆各个服务器,速度慢

pip install paramiko

import paramiko

#创建SSH对象
ssh = paramiko.SSHClient()

#允许连接不在know_host文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#连接服务器
ssh.connect(hostname='10.0.0.100',port=22,username='root',password='1')
stdin ,stdout ,stderr = ssh.exec_command('hostname')

#执行命令
result = stdout.read()
print(result)

#关闭连接
ssh.close()
大致核心代码

方式三  salt stack方式

使用第三方工具,在中控机上装salt-master,待采集信息的服务器装salt-minion,不需要登陆每台服务器,类似于两套生产者消费者模型,分别把数据存到队列中
salt-minion从队列中拿到命令,执行命令,把结果放到队列中,salt-master从队列中拿到结果,发送给API
#优点:快,开发成本低, #缺点:依赖于第三方工具

1、安装与配置

master端
#1安装salt-master
 yum install salt-master

#2修改配置文件
    vim /etc/salt/master

#3启动
    service salt-master start


#slave端
#1安装salt-minion
    yun install salt-minion

#2修改配置文件
    master:10.211.55.4            #master的地址
或
    master:
        -10.211.55.4
        -10.211.55.5
    random_master:True
    id:c2.salt.con        #客户端在salt-master中显示的唯一ID

#3启动
    service salt-minion start
View Code

2、授权

salt-key-L                 # 查看已授权和未授权的slave
salt-key -a  salve_id      # 接受指定id的salve
salt-key -r  salve_id      # 拒绝指定id的salve
salt-key -d  salve_id      # 删除指定id的salve

3、执行命令

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

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

基于API的方式

import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
原文地址:https://www.cnblogs.com/pdun/p/11079146.html