Python 调用 Zabbix API 自动创建主机,关联主机组和模板

1、编写 Python 脚本调用 Zabbix API 自动创建 Host,关联 Host Group 和 Linked template

# coding: utf-8
import requests
import json
import uuid
import sys


class ZabbixApi(object):
    def __init__(self, zabbix_url):
        self.zabbix_url = zabbix_url
        self.headers = {"Content-Type": "application/json-rpc"}
        self.data = {
            "jsonrpc": "2.0",
            "id": str(uuid.uuid1()),
            "auth": None
        }

    def post_action(self, data):
        req = requests.post(self.zabbix_url, data=json.dumps(data), headers=self.headers)
        dict_data = json.loads(req.text)
        return dict_data['result']

    def get_user_token(self, username, password):
        self.data['method'] = "user.login"
        self.data['params'] = {
            "user": username,
            "password": password
        }
        return self.post_action(self.data)

    def zabbix_action(self, method, params, auth):
        self.data['method'] = method
        self.data['params'] = params
        self.data['auth'] = auth
        self.data['id'] = str(uuid.uuid1())
        return self.post_action(self.data)

if __name__ == "__main__":
    if len(sys.argv) == 5:
        host_name = sys.argv[1]
        host_ip = sys.argv[2]
        group_name = sys.argv[3]
        template_name = sys.argv[4]
        url = 'http://192.168.1.254/api_jsonrpc.php'
        zabbix_api = ZabbixApi(url)
        auth = zabbix_api.get_user_token('Admin', 'zabbix')
        # 获取 template_id
        method = "template.get"
        params = {
              "output": "templateid",
              "filter": {
                  "host": [
                      template_name,
                  ]
              }
            }
        template_id = zabbix_api.zabbix_action(method, params, auth)
        # 获取 groupid
        method = "hostgroup.get"
        params = {
            "output": "groupid",
            "filter": {
                "name": [
                    group_name
                ]
            }
        }
        groupid = zabbix_api.zabbix_action(method, params, auth)
        # 添加 host
        method = "host.create"
        params = {
            "host": host_name,
            "interfaces": [
                {
                    "type": 1,
                    "main": 1,
                    "useip": 1,
                    "ip": host_ip,
                    "dns": "",
                    "port": "10050"
                }
            ],
            "groups": groupid,
            "templates": template_id
        }
        result = zabbix_api.zabbix_action(method, params, auth)
        print result
    else:
        print "Usage: " + sys.argv[0] + " host_name host_ip group_name template_name"
        print "Example: " + sys.argv[0] + ' realserver-03 192.168.1.125 "Linux servers" "Template OS Linux"'

2、脚本执行结果

# python zabbix_api.py 
Usage: zabbix_api.py host_name host_ip group_name template_name
Example: zabbix_api.py realserver-03 192.168.1.125 "Linux servers" "Template OS Linux"

# python zabbix_api.py realserver-03 192.168.1.125 "Linux servers" "Template OS Linux"
{u'hostids': [u'10263']}

3、查看 Zabbix Web 端


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 8,008评论 0 37
  • 1.写在前面 本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的...
    天之蓝色阅读 2,535评论 0 16
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,219评论 4 16
  • 佛法说“一切境界都要回到自己身上去找原因”,不是世俗理解的“都是你自己的问题、是你的错”,因为它并不是在讨论眼前境...
    心若了无尘阅读 589评论 2 15
  • 回想一下,你曾经拥有过的最好的学习体验么?是什么样的? 如果问我,我一定会回答《影像中的生死学》,为什么呢?只要你...
    Sandy的小屋阅读 3,555评论 0 5