(三)Python调用Zabbix api之从入门到放弃——从本节开始放弃
admin
2023-07-24 21:02:22
0次

    因为忙着写项目。所以没有时间来回倒腾!因此开始讨厌写一些技术博客,所以从本节开始放弃,刚入门就要放弃了!可能我是一个不善于分享的人,也可能我是一个自私的人。不得不承认白羊座的人做事情确实是三分钟热度。昨天还想着好好的写一篇系列文章,除了当是给自己做一些总结之外,也可以帮助到有需要的朋友。不过,确实是三分钟热度了,今天是拔凉拔凉的。

    好了,下面是获取IP,HOSTS,HOSTID,GROUPID,ITEMID的Python代码,随便贴点,希望起到抛砖引玉的效果。当然,也是不完整的。

# -*- coding:utf-8 -*-

class Token:
    """Request zabbix server token"""
    __REQ = {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": ZBXUSER,
            "password": ZBXPASS
        },
        "id": 0
    }

    @classmethod
    def request(cls):
        try:
            try:
                return ZBXHttp.request(Token.__REQ)['result']
            except Exception:
                raise MonAlarmException('Invalid username or password, unable to request zabbix token')
        except MonAlarmException as e:
            e.error()
            return Response.format(errorDesc=e, errorCode=MonAlarmErrCode.UNABLE_REQ_TOKEN)


class BasicData:
    __REQ = {
        "jsonrpc": "2.0",
        "method": "host.get",
        "params": {
            "output": ['host'],
            'selectInterfaces': ['ip'],
            'selectGroups': ''
        },
        "auth": Token.request(),
        "id": 1
    }

    @classmethod
    def __request(cls):
        result = ZBXHttp.request(BasicData.__REQ)
        err = result.get('error', None)
        if err:
            try:
                raise MonAlarmException('Unable to request basic data, Session terminated, re-login, please.')
            except MonAlarmException as e:
                e.error()
                return Response.format(errorDesc=e, errorCode=MonAlarmErrCode.UNABLE_REQ_BASICDATA)
        else:
            return result

    @classmethod
    def get_summary(cls):
        ip = []
        host = []
        hostid = []
        groupid = []

        result = cls.__request()['result']
        for item in result:
            ip.append(item['interfaces'][0]['ip'])
            host.append(item['host'])
            hostid.append(item['hostid'])
            groupid.append(item['groups'][0]['groupid'])

        return [ip, host, hostid, groupid]


class ItemsID:
    @classmethod
    def request(cls,host_id, item_name):
        __REQ = {
            "jsonrpc": "2.0",
            "method": "item.get",
            "params": {
                "output": "itemid",
                "hostids": host_id,
                "search": {"key_": item_name}
            },
            "auth": Token.request(),
            "id": 2
        }
        try:
            return ZBXHttp.request(__REQ)['result'][0]['itemid']
        except Exception:
            return 0
# -*- coding:utf-8 -*-

class Action:
    @classmethod
    def get_cpu_data(cls):
        summary = BasicData.get_summary()
        ip = summary[0]
        host = summary[1]
        hostid = summary[2]
        groupid = summary[3]

        count = len(summary[0])

        for index in range(count):
            itemid = ItemsID.request(hostid[index], CpuItem.item_cpu_used)
            print({
                'ip': ip[index],
                'host': host[index],
                'hostid': hostid[index],
                'groupid': groupid[index],
                'itemname': CpuItem.item_cpu_load,
                'itemid': itemid
            })


if __name__ == '__main__':

    Action.get_cpu_data()


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...