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

      一、浅析

      就目前而言,现在对资产采集一共有四种方式,分别是:

    • Agent
    • SSH类,如:paramiko
    • saltstack
    • puppet(ruby开发)

      对于前面三个都是由Python语言开发,最后一个为Ruby开发,因此我们重点介绍前面三个的具体内容。

      二、Agent

      1、特点及应用场景:

        适用于服务器多,由每一个服务器端将数据发送至API接口,API与数据库交互完成数据通信,性能相对比较高,速度快,但是每一个服务器都必须安装Agent。

      2、用法:

    import subprocess
    import requests
    #每一个服务器,都有这么一个py文件。
    v1=subprocess.getoutput('ipconfig') #执行Windows命令,返回信息赋值给v1
    value=v1[68:88] #字符串切片取值
    
    v2=subprocess.getoutput('dir') #同上
    value2=v2[0:10]
    
    url="http://127.0.0.1:8000/asset.html" #API接口URL
    response=requests.post(url,data={'k1':value,'k2':value2}) #向API通过post方式,data以字典方式传值,返回一个对象。
    print(response.text) #打印对象的text信息
    

      三、SSH类  (如:paramiko)

      1、特点及应用场景:

        适用于服务器少,性能要求不高,它主要通过中控机上安装paramiko实例出对象,由对象对每一台服务器通信获取数据,相对耗时,属于串联,上一个结束后,进行下一个。

      2、用法:

    import paramiko
    import requests
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    #允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接其中一台服务器
    ssh.connect(hostname='192.168.145.142',port=22,username='root',password='123321')
    # 发送执行命令
    stdin,stdout,stderr = ssh.exec_command('ifconfig')
    # 获取命令结果
    result=stdout.read()
    # 关闭连接
    ssh.close()
    value=result[68:88] #字符串切片
    print(value)
    
    # 向API以POST方式发送数据
    url='http://127.0.0.1:8000/asset.html'
    response=requests.post(url,data={'k1':value})
    print(response.text) #打印API返回信息
    

      三、SaltStack

      1、概述:SaltStack简单来说是一个基础架构管理工具,这个比较抽象,说白就是一个运维管理工具,底层是使用python实现,C/S架构,支持分布式部署,据说可以轻松管理上W台服务器,和Puppet这类工具很类似,其主要的功能:

    • 基于Key的远程连接并执行命令;
    • 强大的搜索器,多种方式过滤服务器;
    • 灵活的远程部署实现方式;
    • 基于YMAL格式对文件,用户,用户组及服务等资源灵活管理;

      2、特点及应用场景:

        当前应用场景已经使用SaltStack,服务器数量多,它主要是在中控机安装salt-master,服务器安装salt-minion,通过队列完成通信,获取数据。

      3、安装及配置

    yum -y install salt-master    /安装
    rpm -aq|grep salt-master    /检测
    salt-master配置文件: /etc/salt/master
    服务端安装
    yum -y install salt-minion   /安装
    rpm -aq|grep salt-minion   /检测
    salt-minion配置文件: /etc/salt/minion
    客户端安装
    salt-key -L    /列出所有key,key格式是minion-id,如果没有配置minion-id,则是主机名
    salt-key -A    /接受所有key
    salt-key -a  “ZK-YJY-APP-01”   /接受指定的key
    salt-key -R    /拒绝所有未接受的key
    salt-key -D     /删除所有key
    salt-key -d  “ZK-YJY-APP-01”   /删除指定的key
    添加客户端及授权

      4、安装注意事项:

    • 是否安装gcc?    (yum install gcc -y)
    • 是否关闭防火墙?   (systemctl stop firewalld.service)
    • 配置后是否重启服务?   (service salt-master restart  或  service salt-minion restart   --配置完成都要重启一下)

      5、用法:

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

    1、基于shell的命令
    
    salt '主机名或配置的ID' cmd.run  '被执行的命令'
    
    2、基于Salt连接API
    
    import salt.client
    local = salt.client.LocalClient()
    result = local.cmd('主机名或配置的ID', 'cmd.run', ['被执行的命令'])
    

      

      其他内容详情请戳友情链接 ☛:猛戳这里

        

  • 相关阅读:
    如何更高效(HOWTO: Be more productiveAaron Swartz)
    这事儿太丢人了
    2012年终极心愿之每月培养一个好习惯
    【转载】SQLLite使用入门
    【原创】XNA 4.0学习笔记之如何使用XACT给Cue添加多个音频
    【原创】编程日记之——如何对DataSet进行强类型化
    【索引】Win7 操作系统编程常识
    [原创]怎么降低Winform程序占用的内存
    【原创】自制Winform标签控制控件[支持不规则窗体]
    【原创】XNA 4.0学习笔记之绘制基元图形的几种PrimitiveType区别[PS:4.0似乎有所改动]
  • 原文地址:https://www.cnblogs.com/Michael--chen/p/7241828.html
Copyright © 2011-2022 走看看