|
|
51CTO旗下网站
|
|
移动端

2.4.2 利用Python脚本获取Facts

《运维前线:一线运维专家的运维方法、技巧与实践》第2章利用Facter和Django快速构建CMDB,本章将会详细讲解,如何利用开源软件Facter和Django快速构建一个小型的CMDB系统。界面与功能不算复杂,这也是它轻量的体现,本章更多的是提供一种思路,以达到抛砖引玉的作用,仅供大家参考。本节为大家介绍利用Python脚本获取Facts。

作者:云技术社区来源:机械工业出版社|2017-04-23 12:27

2.4.2 利用Python脚本获取Facts

首先要确定系统中已经安装了Puppet,如果没有,可以从http://yum.puppetlabs.com/下载,并参考https://docs.puppetlabs.com/puppet/latest/reference/install_pre.html进行安装,接下来看看如何通过Python程序来获取Facts信息(注意:下面的程序是查看当前机器的fact信息,下面的这个程序对结果不会做过多的处理,在后面进行CMDB项目的时候将详细讲解fact的数据处理),实例程序facter_message.py的内容如下:

  1. #!/usr/bin/python  
  2. # encoding: utf-8  
  3. __authors__     = ['LiuYu']  
  4. __version__     = 1.0  
  5. __date__        = '2015-08-19 14:34:44' 
  6. __licence__     = 'GPL licence' 
  7.  
  8. # 导入模块  
  9. import commands  
  10. import re  
  11. # 定义一个变量  
  12. command = 'facter' 
  13. # 定义要打印的列表  
  14. show_list = [('fqdn', u'主机名'),  
  15.              ('domain', u'域名'),  
  16.              ('uptime', u'运行时间'),  
  17.              ('operatingsystem', u'系统'),  
  18.              ('kernelrelease', u'内核版本'),  
  19.              ('ipaddress', u'IP'),  
  20.              ('macaddress', u'MAC'),  
  21.              ('memorysize_mb', u'内存MB'),  
  22.              ('processors', u'CPU'),  
  23.              ('blockdevices', u'磁盘'),  
  24. ]  
  25. # 定义一个处理命令的函数  
  26. def handle_command_message(command):  
  27.     status, content = commands.getstatusoutput(command)  
  28.     if status == 0:  
  29.         return content  
  30.     else:  
  31.         return  
  32. # 通过函数处理名称,然后打印结果  
  33. if __name__ == '__main__':  
  34.     result_dict = {}  
  35.     result = handle_command_message(command)  
  36.     if result:  
  37.         for line in result.strip().split('\n'):  
  38.             if re.findall('=>', line):  
  39.                 key, value = line.split('=>', 1)  
  40.                 result_dict[key.strip()] = value.strip()  
  41.         for f_k, f_s in show_list:  
  42.             if f_k in result_dict:  
  43.                 print f_s, ':', result_dict[f_k] 

下面我们来运行facter_message.py程序,打印结果:

  1. $ python facter_message.py  
  2. 主机名 : puppetclient.domain.com  
  3. 域名 : domain.com  
  4. 运行时间 : 1 day  
  5. 系统 : CentOS  
  6. 内核版本 : 2.6.32-431.1.2.0.1.el6.x86_64  
  7. IP: 10.20.122.111  
  8. MAC : 00:22:E2:5E:4D:10  
  9. 内存 MB : 996.48  
  10. CPU : {"count"=>1, "models"=>["QEMU Virtual CPU version 1.1.2"], "  
  11. 磁盘 : sr0,vda,vdb,vdc 


通过如上的简单代码就可以将Facts的信息进行集中处理。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Visual Studio Team Systems软件工程实践

本书论述了软件开发价值增加的思维方式。这一思维方式构成了VSTS的基础,包括VSTS的指导思想,为什么这些指导思想会以某些方式表现,以及它...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊