获取zabbix全量主机

修改URL和username password为自己的系统即可

#!/usr/bin/python3
# -*- coding: utf-8 -*
# Copyright (C) 2023 - 2023 zhoujt, Inc. All Rights Reserved 
# @Date    : 2023/5/15 18:03
# @Author  : zhoujt
# @Email   : zhouxiaobu1022@gmail.com
# @FileName: ZabbixGet_all_host.py
# @IDE     : PyCharm
import requests
import json


# 获取token
class Zabbix:
    def __init__(self, user, password):
        self.user = user
        self.password = password
        self.session = requests.Session()
        self.host = 'http://zabbix.zhoujt.com'
        self.url = self.host + '/api_jsonrpc.php'
        self.login()

    def login(self):
        data = {
            "jsonrpc": "2.0",
            "method": "user.login",
            "params": {
                "user": self.user,
                "password": self.password
            },
            "id": 1,
            "auth": None
        }
        response = self.session.post(self.url, json=data)
        # 获取结果中的token
        self.auth = response.json()['result']

    def get_hosts(self):
        auth_token = self.auth
        # 构造API请求的数据
        data = {
            'jsonrpc': '2.0',
            'method': 'host.get',
            'params': {
                'output': ['hostid', 'host', 'status'],
                'selectInterfaces': ['ip']
            },
            'auth': auth_token,
            'id': 1
        }
        url = self.url
        headers = {'Content-Type': 'application/json'}
        # 发送API请求
        response = requests.post(url, headers=headers, data=json.dumps(data))

        # 解析响应数据
        result = json.loads(response.text)
        stop_host = []
        # 提取主机信息
        if 'result' in result:
            hosts = result['result']
            sum_1 = 0
            for host in hosts:
                sum_1 += 1
                host_id = host['hostid']
                host_name = host['host']
                ip_address = host['interfaces'][0]['ip']
                status = host['status']
                print(f"Host ID: {host_id}, Name: {host_name}, IP: {ip_address}, status: {status}")
                if int(status) == 1:
                    stop_host.append(ip_address)
        else:
            print("Failed to retrieve hosts.")
        print("Host sum: %s" % sum_1)
        stop_1 = 0
        print("=======The stop hosts=======\n")
        for i in stop_host:
            stop_1 += 1
            print(i)
        print("Stop hosts: %s" % stop_1)


zab = Zabbix(user="zhoujt", password="password")
zab.get_hosts()

 

posted @ 2023-05-15 18:44  Security  阅读(82)  评论(0编辑  收藏  举报