cmdb抓取服务信息的方式有很多种,可以使用自动化工具saltstack、ansible、puppet,或者使用其它模块直接ssh远程连接抓取服务器信息。这里记录一下用ansible的API接口调用setup模块抓取。
实验使用两台机器IP系统软件
192.168.93.137centos6.5_x64ansible 1.9.4
192.168.93.128centos6.5_x64无
两台机器建立好ssh信任后在192.168.93.137上执行ansible 192.168.93.128 -m setup
将其封装成函数保存为test.py,(此处封装借鉴的一位高手,可惜忘了博客地址)
里面的参数根据各自的系统可适当修改# -*- coding: UTF-8 -*-
import ansible.runner
def get_info(ip):
data = {}
runner = ansible.runner.Runner(module_name=‘setup‘, module_args=‘‘, pattern=‘all‘, forks=2)
datastructure = runner.run()
sn = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_product_serial‘]
host_name = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_hostname‘]
description = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_lsb‘][‘description‘]
ansible_machine = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_machine‘]
sysinfo = ‘%s %s‘ % (description, ansible_machine)
os_kernel = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_kernel‘]
cpu = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_processor‘][1]
cpu_count = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_processor_count‘]
cpu_cores = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_processor_cores‘]
mem = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_memtotal_mb‘]
ipadd_in = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_all_ipv4_addresses‘][0]
disk = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_devices‘][‘sda‘][‘size‘]
# print sysinfo
data[‘sn‘] = sn
data[‘sysinfo‘] = sysinfo
data[‘cpu‘] = cpu
data[‘cpu_count‘] = cpu_count
data[‘cpu_cores‘] = cpu_cores
data[‘mem‘] = mem
data[‘disk‘] = disk
data[‘ipadd_in‘] = ipadd_in
data[‘os_kernel‘] = os_kernel
data[‘host_name‘] = host_name
return data
if __name__ == ‘__main__‘:
data = get_info(‘‘)
import pprint
pprint.pprint(data)
在192.168.93.137上执行test.py获取192.168.93.128的服务器信息
运维平台展示服务器信息
按钮的id值最后一位就是192.168.93.128在数据库表中的id
相关资源:vissim电子仿真软件-嵌入式文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!