python自动化运维学习第三十七天--cmdb总结

接上篇,通过salt-api拿到了想要的数据,但是这个数据包括很多内容。以内存为例,只需要内存大小,其他信息不需要。这时我们就要对内存数据做一些处理,返回我们真正想要的值。
下面是对通过salt-api获取的数据做处理,get_data.py的内容

def send_main(param):
    salt = SaltApi(SALT_API_CON,param)
    # print("salt---->",salt)
    result1 = salt.salt_command()

    #以内存为例,对获取结果做处理
    mem_dict = {}
    for host, value in result1.items():
        if not value:
            print(host, "内存信息获取失败,请验证dmidecode工具")
            continue
        if host not  in mem_dict.keys():
            mem_dict[host] = {}
        memory = 0
        li = value.split('\n\t')
        for item in li:
            if 'Memory Device' in item:
                continue
            k, v = item.split(':')
            if k == 'Size':
                num, company = v.rsplit(" ",maxsplit=1)
                try:
                    num = int(num)/1024
                except ValueError:
                    continue
                memory += num
        mem_dict[host]['memory']=memory
    return mem_dict

获取内存的mem.py代码修改为

class Mem(Base):
    def run(self):
        self.method = "cmd.run"
        self.tgt = "*"
        self.arg = "dmidecode -q -t 17 2>/dev/null"      #获取内存的命令
        # self.arg = "free -m"

        return {"client": "local", "fun": self.method, "tgt": self.tgt, "arg":self.arg }

通过处理后输出的就是如下dict类型的数据
{salt-id:{memory:32.0}}
在稍微处理下就可以存到数据库中。
通过salt-api获取memory数据进行处理的代码在get_data方法中,当获取其他信息如cpu、硬盘等信息时就不能使用这段代码来处理。为了方便维护,把处理数据的这部分代码放到每个获取元素的py文件中,如处理memory的代码可以放到mem.py文件中,在py的类中建一个处理数据的方法,当获取数据处理时调用该方法即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值