通过Zabbix API 添加host

脚本内容:

#!/usr/bin/python
#-*- coding:utf8 -*-
import json,sys,argparse
from zabbix_api import ZabbixAPI
server = "http://172.16.206.128/zabbix"
username = "Admin"
password = "zabbix"
zapi = ZabbixAPI(server=server, path="", log_level=0)
zapi.login(username, password)
def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("-H", "--host", help="host name")
    parser.add_argument("-i", "--ip", help="host ip")
    parser.add_argument("-g", "--group", help="group name")
    parser.add_argument("-p", "--proxy", help="proxy host name")
    parser.add_argument("-t", "--templates", help="template name")
    # 解析所传入的参数
    args = parser.parse_args()
    
    if not args.host:
        args.host = raw_input(‘host: ‘)
    if not args.ip:
        args.ip = raw_input(‘ip: ‘)
    if not args.templates:
        args.templates = raw_input(‘templates: ‘)
    return args

def get_proxy_id(proxy):
    get_proxy_id = zapi.proxy.get(
    {
        "output": "proxyid",
        "selectInterface": "extend",
        "filter": {
             "host": proxy
            }
    }
)
    proxy_id=get_proxy_id[0][‘proxyid‘]
    return proxy_id

def get_group_id(groups):
    group_id = zapi.hostgroup.get(
        {
            "output": "groupid",
            "filter": {
                "name":groups.split(",")
            }
        }
)
    return group_id

def get_templates_id(templates):
    templates_id = zapi.template.get(
    {
        "output": "templateid",
        "filter": {
            "host":templates.split(",")
        }
    }
)
    return templates_id

def create_host_with_proxy(hostname,group_id,templates_id,ip,proxy_id):
    host_create = zapi.host.create(
        {
            "host":hostname,
            "groups":group_id,
            "templates":templates_id,
            "interfaces":[
                {
                    "type":1,
                     "main":1,
                     "useip":1,
                     "ip":ip,
                     "dns":"",
                     "port":"10050"
                }
            ],
            "proxy_hostid":proxy_id,
            "status":0
    }
)
    return "host add success!"

def create_host_without_proxy(hostname,group_id,templates_id,ip):
    host_create = zapi.host.create(
        {
            "host": hostname,
            "groups": group_id,
            "templates": templates_id,
            "interfaces":[
                {
                    "type":1,
                    "main":1,
                    "useip":1,
                    "ip":ip,
                    "dns":"",
                    "port":"10050"
                 }
            ],
            "status":0
    }
)
    return "host add success!"

if __name__ == "__main__":
    args = get_args()
    hostname = args.host
    ip = args.ip
    group_id = get_group_id(args.group)
    templates_id = get_templates_id(args.templates)
    if args.proxy:
        proxy_id = get_proxy_id(args.proxy)
        print create_host_with_proxy(hostname,group_id,templates_id,ip,proxy_id)
    else:
        print create_host_without_proxy(hostname,group_id,templates_id,ip)

脚本内容解释:

要使用本脚本,需要安装zabbix-api模块

脚本思路:

通过zabbix API添加host,需要知道以下信息:

hostname:主机名(不是可见名)

ip:主机IP

group_ip:host所属组的组id

templates_id:host关联模板的模板id

proxy_id:如果是通过proxy添加主机,则需要给出proxy_id,这个是可选项,所以我写了两个函数来区分有proxy和没有proxy的情况

hostname、ip这些可以直接通过命令行传参获取到,但是group_id、templates_id、proxy_id需要通过zabbix API的方法去获取到,比如:group_id需要事先知道group name,才能通过api查询到,脚本中我对于如何获取group_id、templates_id、proxy_id都用函数去实现了,所以在命令行传参时,只需要传递group name、templates name、proxy name就可以获取到对应的id了。

如果不清楚参数是怎么获取的,请查阅argparse模块相关资料

参考资料:https://github.com/CNSRE/Zabbix-PyZabbix/blob/master/zabbix_host_add.py

时间: 2024-08-23 07:44:16

通过Zabbix API 添加host的相关文章

基于zabbix API添加监控主机

由于zabbix监控的主机虽为同一个业务,但是由于其跨机房并且网络为为16位,两个机房导致zabbix的自动添加扫描的主机数量就差不多有12w多个,严重影响其效率和性能. 使用zabbix API的基本步骤如下: 连接http://x.x.x.x/api_jsonrpc.php,(在zabbix网页文件的目录下为api_jsonrpc.php),提供用户名和密码,并标识HTTP头部"Content-Type":"application/json",HTTP方法为po

利用zabbix api添加、删除、禁用主机

python环境配置yum -y install python-pip安装argparse模块pip install -i https://pypi.douban.com/simple/ argparse 脚本修改请修改脚本中zabbix登录地址以及zabbix管理员帐户及密码 #!/usr/bin/env python #-*- coding: utf-8 -*- import json import sys import urllib2 import argparse from urllib

python利用zabbix API添加监控

首先说一下坑的地方就是python2和python3的模块改变问题,当然精通python的可以略过.这个在网上百度一下吧,第二个是导入xlsx文件的时候需要xlrd模块,而这个模块最好跟着我下面的方法走,那个python2 就可以用我下边的脚本了. 1.安装xlrd读取Excel文件 1.1. 下载setuptools-38.2.4.zip,上传至zabbix服务器解压安装,下载地址:https://pypi.python.org/packages/69/56/f0f52281b5175e3d9

zabbix API 删除host

脚本内容如下: #!/usr/bin/python #-*- coding:utf8 -*- import json,sys,argparse from zabbix_api import ZabbixAPI server = "http://172.16.206.128/zabbix" username = "Admin" password = "zabbix" zapi = ZabbixAPI(server=server, path=&quo

zabbix批量添加主机监控-zabbix api调用

使用python调用zabbix api #!/usr/bin/env python # Version = 3.6.1 # __auth__ = 'warren' import json from urllib import request, parse ZABBIX_URL = 'http://192.168.22.22/zabbix' ZABBIX_USERNAME = "Admin" ZABBIX_PASSWORD = "123456" #以列表形式定义要添

为IIS Host ASP.NET Web Api添加Owin Middleware

将OWIN App部署在IIS上 要想将Owin App部署在IIS上,只添加Package:Microsoft.OWIN.Host.SystemWeb包即可.它提供了所有Owin配置,Middleware注册等方面的Api.我们需要做的其实和SelfHost差不多. 我们依然需要实现Startup类,但是不是通过WebApp来启动了.我们需要通过将Startup类打上[assembly: OwinStartup(typeof(Startup))]来定义这是OWIN的Startup类,当应用运行

基于zabbix添加host与trigger完善~

在配置 zabbix的过程中或者通过zabbix获取数据是,总是需要获取各个组建的id号,有时候需要添加几十上百个item或者trigger.所以就自己写了下面的类.如果以后有需要会再完善.不过估计是不需要了,因为做了一个月监控,终于做完了.代码如下,已经给出简单的注释.有问题可留言. #!/usr/bin/python #-*- coding:utf8 -*- from zabbix_api import ZabbixAPI class zabbix_tools:     '''     从z

【zabbix系列】安装与添加host

测试环境 Ubuntu 14.04.1 LTS [服务端安装] 关于安装官方提供了很详细的安装方法,包括各平台的源码及包安装.关于其他版本Linux请参考 https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages zabbix是C/S架构,所以安装分服务端和客户端.客户端只需要安装zabbix-agent.服务端则建议zabbix和agent都安装. 以下为服务端安装步骤: wget ht

zabbix api

一般架设好server以后都会通过web front 来添加host啊, 模版什么的,这就带来一个效率的问题,比如说我要一时间添加100台host 进去,这个时候有个api ,然后通过脚本来调用就爽了,zabbix的作者们早已想到了这点,api 1.8 这个版本以后就发布了.网上有比较好的教程,我这里就不写了.可以参考我很敬佩的一个人 itnihao的博文: http://itnihao.blog.51cto.com/1741976/1343524 python还是非常好用的,调用api 什么的