zoukankan      html  css  js  c++  java
  • zabbix api

      1 #!/usr/bin/env python
      2 # -*- coding:utf8 -*-
      3 # __author__ = '北方姆Q'
      4 
      5 from pyzabbix import ZabbixAPI
      6 from plugins.duia.singleton import Singleton
      7 
      8 
      9 class ZabbixFactory(Singleton):
     10     def __init__(self, url, username='Admin', password='zabbix'):
     11         self.obj = ZabbixAPI(url)
     12         self.obj.login(username, password)
     13 
     14     def get_hosts(self):
     15         """
     16         获取所有的主机信息列表
     17         :return: dict in list
     18         """
     19         return self.obj.host.get(output='extend')
     20 
     21     def get_host(self, name):
     22         """
     23         获取单台的主机信息
     24         :param name:  需要获取的显示名
     25         :return: dict
     26         """
     27         return self.obj.host.get(output='extend', filter={'name': name})[0]
     28 
     29     def get_host_groups(self):
     30         """
     31         获取所有的主机组信息列表
     32         :return: dict in list
     33         """
     34         return self.obj.hostgroup.get(output='extend')
     35 
     36     def get_hosts_by_group(self, group_name):
     37         """
     38         获取某个主机组内所有主机信息列表
     39         :param group_name: 主机组名
     40         :return: dict in list
     41         """
     42         return self.obj.host.get(groupids=self.__get_host_group_id(group_name), output="extend")
     43 
     44     def get_templates(self):
     45         """
     46         获取所有模版信息
     47         :return: dict in list
     48         """
     49         return self.obj.template.get(output="extend")
     50 
     51     def get_template(self, template_name):
     52         """
     53         根据名称获取单个模版信息
     54         :return: dict
     55         """
     56         return self.obj.template.get(output='extend', filter={"host": template_name})[0]
     57 
     58     def create_group(self, group_name):
     59         """
     60         创建一个新主机组
     61         :param group_name: 新主机组名
     62         :return: 新组id,str
     63         """
     64         ret = self.obj.hostgroup.create(name=group_name)
     65         return ret['groupids'][0]
     66 
     67     def create_host(self, name, ip, groups_name, templates_name, proxy_name=None, status=0):
     68         """
     69         创建一台新主机
     70         :param name: 主机名
     71         :param ip: 主机受监控ip
     72         :param groups_name: 主机所在组,str、list、tuple、set
     73         :param templates_name: 主机关联模版,str、list、tuple、set
     74         :param proxy_name: 使用的代理名称,默认不使用
     75         :param status: 是否启用,默认开启
     76         :return: 新主机id,str
     77         """
     78         groups = [{'groupid': self.__get_host_group_id(groups_name)}] if isinstance(groups_name, str) 
     79             else [{'groupid': self.__get_host_group_id(group_name)} for group_name in groups_name]
     80         templates = [{'templateid': self.__get_template_id(templates_name)}] if isinstance(templates_name, str) 
     81             else [{'templateid': self.__get_template_id(template_name)} for template_name in templates_name]
     82 
     83         if proxy_name is None:
     84             ret = self.obj.host.create(
     85                 host=name,
     86                 status=status,
     87                 groups=groups,
     88                 templates=templates,
     89                 interfaces=[{
     90                     'type': 1,              # 监控类型
     91                     'main': 1,              # 监控类型下第几行
     92                     'useip': 1,             # 使用ip还是dns
     93                     'ip': ip,               # ip框
     94                     'dns': '',              # dns框
     95                     'port': '10050'         # port框
     96                 }]
     97             )
     98         else:
     99             ret = self.obj.host.create(
    100                 host=name,
    101                 status=status,
    102                 groups=groups,
    103                 templates=templates,
    104                 interfaces=[{
    105                     'type': 1,
    106                     'main': 1,
    107                     'useip': 1,
    108                     'ip': ip,
    109                     'dns': '',
    110                     'port': '10050'
    111                 }],
    112                 proxy_hostid=self.__get_proxy_id(proxy_name)
    113             )
    114         return ret['hostids'][0]
    115 
    116     def __get_host_group_id(self, group_name):
    117         """
    118         获取某主机组id
    119         :param group_name: 主机组名
    120         :return: int
    121         """
    122         return int(self.obj.hostgroup.get(output='groupid', filter={'name': group_name.split(',')})[0].get('groupid'))
    123 
    124     def __get_template_id(self, template_name):
    125         """
    126         获取某模版id
    127         :param template_name: 模版名
    128         :return: int
    129         """
    130         return int(self.obj.template.get(output='templateid', filter={'host': template_name.split(',')})[0].get('templateid'))
    131 
    132     def __get_proxy_id(self, proxy_name):
    133         """
    134         获取某代理id
    135         :param proxy_name: 代理名
    136         :return: int
    137         """
    138         return int(self.obj.proxy.get(output='proxyid', filter={'host': proxy_name.split(',')})[0].get('proxyid'))
  • 相关阅读:
    VS2019 离线安装方法详解
    VS2019 实用操作
    WIN7 X64位系统安装SQL SERVER2008失败总结
    给reportview传参数的操作过程
    山寨dell mini 3i的问题
    sql backup
    基于wince.net的环境,使用pocketBuilder调用webservice所需安装环境和步骤
    写了一个通用的用户选择页面,记录一下调用方法
    回顾这几年开发医药CRM的历程
    Cumulative Update package 3 for SQL Server 2008 R2三个补丁下载地址,官网下载不直接给地址,不知为什么
  • 原文地址:https://www.cnblogs.com/bfmq/p/7852622.html
Copyright © 2011-2022 走看看