(三)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()


相关内容

热门资讯

中国“避暑神器”在欧洲卖爆了 2026.06.27作者 | 第一财经 王珍中国企业推出易安装的移动分体式空调,最近被欧洲人视作“避...
苹果Mac、iPad全线涨价!... 快科技6月26日消息,据媒体报道,昨晚,苹果突然官宣上调全球多个市场的Mac、iPad等多款硬件产品...
这个“杀手”太冷了 每一次重大科技突破,都会催生作战方式的深刻变革,从而形成具有鲜明时代特征的非对称战争。近年来,科技革...
原创 [... [微风]一位性学家最近说了一句挺让人后背发凉的话:AI女性机器人,只要做到能解决男性的生理需求这一步...
原创 戳... 编辑:[碰拳] “好位置快被占完了”,这话不是哪个自媒体在贩卖焦虑,是中国星链的总指挥在公开场合说的...
市场监管总局:加快智能体、具身... IT之家 6 月 27 日消息,据央视新闻 6 月 25 日报道,市场监管总局正会同相关部门,加快智...
5G-A用户破亿,华为轮值董事... 6月26日,2026世界移动通信大会(MWC26上海)在上海新国际博览中心举行。在大会赛场,一场机器...
大爆炸后约18亿年:6个星系正... IT之家 6 月 26 日消息,科技媒体 Space 今天(6 月 26 日)发布博文,报道称天文学...
官方通报“果园里密密麻麻立满监... 6月27日,巴东县东瀼口镇人民政府发布关于雷家坪社区一果园安装监控设备有关情况的通报:2026年6月...
女子被急流冲走,卡在石缝中身亡 6月25日下午,广东清远英德市石牯塘镇落龙潭野外溪谷发生一起意外,一名女子戏水时被湍急水流冲走,困在...