当前位置: 首页 > news >正文

[原创]Zabbix3.4_API的python示例

说明:
1.python版本为:python2.7
2.zabbix版本为:zabbix3.4
3.通过python脚本调用zabbix的api接口可以实现批量增删改查主机的信息。
示例如下:
#-*- coding:utf-8 -*-
 
import requests, json
 
#初始化参数
server_url = "http://zabbix3.test.com/api_jsonrpc.php"
header = {"Content-Type": "application/json"}
username = "Admin"
password = "passwd123"
 
#登录zabbix并获取auth的token
login = {
    "jsonrpc" : "2.0",
    "method" : "user.login",
    "params": {
        'user': ""+username+"",
        'password': ""+password+"",
    },
    "auth" : None,
    "id" : 0,
}
auth  = requests.post(server_url, data=json.dumps(login), headers=(header))
auth = auth.json()
 
#跟进ip地址获取主机的hostid
host_get = {
    "jsonrpc":"2.0",
    "method":"host.get",
    "params":{
        "output":["hostid","name"],
        "filter":{"ip":["192.168.5.1","192.168.5.2"]}
    },
    "auth":""+auth['result']+"",
    "id":1,
}
hostid_get = requests.post(server_url, data=json.dumps(host_get), headers=(header))
hostid_get = hostid_get.json()
hostid = hostid_get['result'][0]['hostid']
print hostid,hostid_get['result'][1]['hostid']
 
#根据组名获取groupid
group_get = {
    "jsonrpc": "2.0",
    "method": "hostgroup.get",
    "params": {
        "output": "extend",
        "filter": {
            "name": [
                "测试组"
            ]
        }
    },
    "auth":""+auth['result']+"",
    "id": 1
}
groupid_get = requests.post(server_url, data=json.dumps(group_get), headers=(header))
groupid_get = groupid_get.json()
groupid = groupid_get['result'][0]['groupid']
print groupid
 
#跟进模板名来获取templateid
template_get = {
    "jsonrpc": "2.0",
    "method": "template.get",
    "params": {
        "output": "extend",
        "filter": {
            "host": [
                "Template OS Linux",
            ]
        }
    },
    "auth":""+auth['result']+"",
    "id": 1
}
templateid_get = requests.post(server_url, data=json.dumps(template_get), headers=(header))
templateid_get = templateid_get.json()
templateid = templateid_get['result'][0]['templateid']
print templateid
 
#跟进proxy名获取proxyid
proxy_get = {
    "jsonrpc": "2.0",
    "method": "proxy.get",
    "params": {
        "output": "extend",
        "selectInterface": "extend",
        "filter": {
            "host": [
                "Zabbix-proxy-test",
            ]
        }
    },
    "auth": ""+auth['result']+"",
    "id": 1
}
proxy_get_id = requests.post(server_url, data=json.dumps(proxy_get), headers=(header))
proxy_get_id = proxy_get_id.json()
proxyid = proxy_get_id['result'][0]['proxyid']
print proxyid
 
#定义并添加一个主机到zabbix,指定组,模板,host和name名不支持中文
host_create = {
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "192.168.5.1",
        "name": "this is a test-192.168.5.1",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "192.168.5.1",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": ""+groupid+""
            }
        ],
        "templates": [
            {
                "templateid": ""+templateid+""
            }
        ],
        "proxy_hostid": ""+proxyid+"",
        "inventory_mode": 0
    },
    "auth":""+auth['result']+"",
    "id": 1
}
host_create_id = requests.post(server_url, data=json.dumps(host_create), headers=(header))
host_create_id = host_create_id.json()
print host_create_id
 
#跟进hostid删除主机
host_delete = {
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [hostid],
    "auth":""+auth['result']+"",
    "id": 1
}
delete_id = requests.post(server_url, data=json.dumps(host_delete), headers=(header))
deleteid = delete_id.json()
print deleteid

  

转载于:https://www.cnblogs.com/wsjhk/p/8644584.html

相关文章:

  • VC程序异常中断的原因
  • POJ 2331 Water pipe IDA*
  • 软件问题
  • POJ 3460 Booksort IDA*
  • SpringCloud系列八:自定义Ribbon配置
  • 结构之法算法之道blog最新博文集锦第6期CHM文件0积分下载
  • BZOJ4318: OSU!
  • MSBuild使用初步
  • python库--pandas--写入文本文件
  • WPF程序编译(从命令行到Visual Studio)
  • Hibernate学习(1)- 初识
  • C#下.NET配置文件使用(一)
  • JS运行机制(进程与线程的区分)
  • C#下.NET配置文件使用(二)
  • MAC为Apache2服务器配置多个虚拟主机
  • __proto__ 和 prototype的关系
  • interface和setter,getter
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Redis 懒删除(lazy free)简史
  • Vue 重置组件到初始状态
  • webpack4 一点通
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 前端面试之CSS3新特性
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 小程序button引导用户授权
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (算法)求1到1亿间的质数或素数
  • (转)创业的注意事项
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Micro Framework初体验
  • .net 生成二级域名
  • .NET 中的轻量级线程安全
  • .Net多线程总结
  • .NET和.COM和.CN域名区别
  • @RunWith注解作用
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [20181219]script使用小技巧.txt
  • [Angular 基础] - 数据绑定(databinding)
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C++]高精度 bign (重载运算符版本)
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [codeforces] 25E Test || hash
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [NAND Flash 6.4] NAND FLASH基本读操作及原理_NAND FLASH Read Operation源码实现
  • [node] Node.js 缓冲区Buffer
  • [OCR]Python 3 下的文字识别CnOCR
  • [Oh My C++ Diary]#ifndef / #define / #endif 使用详解
  • [PAT] 1041 Be Unique (20 分)Java
  • [VSCode] Shortcuts