zoukankan      html  css  js  c++  java
  • CMDB资产采集方式

    一:Agent方式

    原理:在每台服务器装上agent客户端程序,定时向数据库发送指定的资产信息。

    优点:速度快。

    缺点:服务器上需要多装一个软件

     1 import subprocess
     2 import requests
     3 # pip3 install requests
     4 
     5 # ################## 采集数据 ##################
     6 # result = subprocess.getoutput('ipconfig')
     7 # result正则处理获取想要数据
     8 
     9 # 整理资产信息
    10 # data_dict ={
    11 #     'nic': {},
    12 #     'disk':{},
    13 #     'mem':{}
    14 # }
    15 
    16 # ##################  发送数据 ##################
    17 # requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)
    agent实现方式

    二:SSH方式

    原理:中间组件主动向服务器获取资产信息,然后由中间件向数据库添加数据(通过api)

    优点:服务器端不用安装客户端版软件

    缺点:慢

     1 # 基于paramiko模块, pip3 install paramiko
     2 import requests
     3 import paramiko
     4 
     5 # ################## 获取今日未采集主机名 ##################
     6 #result = requests.get('http://www.127.0.0.1:8000/assets.html')
     7 # result = ['c1.com','c2.com']
     8 
     9 
    10 # ################## 通过paramiko连接远程服务器,执行命令 ##################
    11 # 创建SSH对象
    12 ssh = paramiko.SSHClient()
    13 # 允许连接不在know_hosts文件中的主机
    14 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    15 # 连接服务器
    16 ssh.connect(hostname='192.168.14.36', port=22, username='wupeiqi', password='123')
    17 
    18 # 执行命令
    19 # stdin, stdout, stderr = ssh.exec_command('df')
    20 
    21 # 获取命令结果
    22 # result = stdout.read()
    23 
    24 # 关闭连接
    25 # ssh.close()
    26 # print(result)
    27 
    28 # data_dict = {result}
    29 
    30 # ##################  发送数据 ##################
    31 # requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)
    SSH采集方式

     三:Saltstack方式

    原理:和第二种类似,只不过基于第三方软件,中间件向队列中放请求,客户端向队列中不停接收请求,一旦接收到请求,服务器解析后发现需要自己返回资产信息,就执行命令并将返回结果放入另一个队列,中间件从结果队列中取数据,然后通过API存入数据库

    优点:速度快,开发成本低

    缺点:依赖第三方软件

     1 # 1. 安装saltstack
     2 #       rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
     3 #
     4 #
     5 """
     6         Master: yum install salt-master
     7        Master准备:
     8             a. 配置文件,监听本机IP
     9                 vim /etc/salt/master
    10                 interface: 本机IP地址
    11             b. 启动master
    12                 /etc/init.d/salt-master start
    13 
    14 
    15         Slave:  yum install salt-minion
    16         Slave准备:
    17             a. 配置文件,连接那个master
    18                 vim /etc/salt/minion
    19                 master: 远程master地址
    20             b. 启动slave
    21                 /etc/init.d/salt-minion start
    22 
    23 2. 创建关系
    24     查看
    25     Master:salt-key -L
    26         Accepted Keys:
    27         Denied Keys:
    28         Unaccepted Keys:
    29             c1.com
    30             c2.com
    31             c3.com
    32         Rejected Keys:
    33     接受
    34     Master:salt-key -a c1.com
    35         Accepted Keys:
    36             c1.com
    37             c2.com
    38         Denied Keys:
    39         Unaccepted Keys:
    40             c3.com
    41         Rejected Keys:
    42 
    43 
    44 3. 执行命令
    45     master:
    46         salt 'c1.com' cmd.run  'ifconfig'
    47 
    48     import salt.client
    49     local = salt.client.LocalClient()
    50     result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
    51 
    52 """
    53 # ################## 获取今日未采集主机名 ##################
    54 #result = requests.get('http://www.127.0.0.1:8000/assets.html')
    55 # result = ['c1.com','c2.com']
    56 
    57 
    58 # ################## 远程服务器执行命令 ##################
    59 # import subprocess
    60 # result = subprocess.getoutput("salt 'c1.com' cmd.run  'ifconfig'")
    61 #
    62 # import salt.client
    63 # local = salt.client.LocalClient()
    64 # result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
    65 
    66 
    67 # ##################  发送数据 ##################
    68 # requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)
    Saltstack

     四:puppet

    原理:服务器端主动向中间件发送数据,中间件将数据通过API存入数据库。

    优点:自动向中间件服务器提供数据

    缺点:中间件puppet使用ruby开发

  • 相关阅读:
    java抽象类和接口
    java的三大特征:封装,继承和多态
    java的数组
    django 4.get接口开发
    django 3.post接口开发
    C# 程序启动最小化至任务栏及闪烁
    续Html5
    使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架
    Spring MVC拦截器
    Html5高级
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/12585349.html
Copyright © 2011-2022 走看看