通过Python利用saltstack进行生成服务器资产清单

通过Python利用saltstack进行生成服务器资产清单,第1张

通过Python利用saltstack进行生成服务器资产清单

前言:人工记录每台网络服务器硬件配置信息已经是很久以前的事情了。无论是基于脚本制作,还是自动化技术的专用工具,都可以一次编写,四处爬行。本文以saltstack为关键应用工具,然后利用其APi编写所需的Python脚本~~

要求如下:形成网络服务器的主机名、IP地址、运行内存、CPU内核、计算机 *** 作系统、数据信息磁盘配额制、关键运营服务项目。

盐堆快速入门,请参考:http://youerning.blog.51cto.com/10513771/1708964

Grains,这里是使用saltstack的关键,是saltstackminion形成的一些静态数据信息,如CPU、运行内存、主机名等。,而这是每个人都需要的。

实现salt\*grains.items,它会复制很多默认设置抓取的信息,其中一些如下

自然你只选择你必须的,实际 *** 作如下。

获取主机名

salt H-T-4 grains.item host

获取IP地址

salt zabbix grains.item ipv4

获取CPU内核

salt \* grains.item num_cpus

等等,根据自己的需求,get~~~

特别是谷物信息中没有电脑硬盘信息,所以你需要根据disk.usage选项获取你需要的电脑硬盘信息

实现了Saltzabbixdisk.usage,并获得了以下结果。

其中1K-blocks是大家都需要的电脑硬盘信息,按照要求只需要数据信息盘/数据,所以这个盘的配额制后面会测。

最后,脚本如下

#coding=utf-8 import salt.client as sc import json ###salt启用 local = sc.LocalClient() ###总体目标服务器特定 tgt = "*" ###获得grains,disk信息 grains = local.cmd(tgt,"grains.items") diskusage = local.cmd(tgt,"disk.usage") ###关键运用目录即文档开始 app_name = ["tomcat","zookeeper","redis","mysql","nginx"] cols = "主机名,IP地址,运行内存(GB),CPU核数,电脑 *** 作系统,数据信息盘/data(GB),隶属新项目,关键运用" ###开启一个.csv文件,便于载入 ret_file = open("ret.csv","w") ###最先载入开始,有点儿字段的含意 ret_file.write(cols  "\n") try:     for i in grains.keys():         ###复印信息可注解掉         print grains[i]["nodename"]         print "ipv4"  ":" ,grains[i]["ipv4"]         print "mem_total"  ":" , grains[i]["mem_total"] / 1024  1         print "num_cpus"  ":" , grains[i]["num_cpus"]         print "osfullname"  ":" , grains[i]["osfullname"]         print "release"  ":" , grains[i]["lsb_distrib_release"]         ###很有可能一些服务器沒有/data数据信息盘1048576是1024x1024         if "/data" not in diskusage[i]:             print "diskusage"  ":"  "have no /data disk"         else:             data_vol = int(diskusage[i]["/data"]["1K-blocks"])             print "diskusage"  ":" , data_vol / 1048576          ###除掉127.0.0.1这一详细地址         ipv4 = str(grains[i]["ipv4"]).replace(", '127.0.0.1'","")         ###由于一些历史时间遗留,这儿获得并不是主机名,只是salt-minion的id名,用于分辨关键运用         hostname = grains[i]["id"]         ipv4 = str(grains[i]["ipv4"]).replace(", '127.0.0.1'","")         ipv4 = ipv4.replace(",","and")         mem = grains[i]["mem_total"] / 1024  1         num_cpu = grains[i]["num_cpus"]         OS = grains[i]["osfullname"]  grains[i]["lsb_distrib_release"]         if "/data" not in diskusage[i]:             disk_data = "None"         else:             disk_data = data_vol / 1048576         ###新项目名叫空         project = ""         ###根据minion ID名来分辨关键运作服务项目,例如xx-mysql-1,则运作mysql         for j in app_name:             if j in hostname.lower():                 app =  j                 break             else:                 app = "undefined"         c = ","         ###联接并载入         line = hostname  c  ipv4  c  str(mem)  c  str(num_cpu)  c  str(OS)  c  str(disk_data)  c  project  c  app         ret_file.write(line  "\n") except Exception,e:     print "Exception:\n",e finally:     ret_file.close()

用文本文档打开应该是这样的。

用Excel打开应该是那样的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/778832.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存