Zabbix API官方文档: https://www.zabbix.com/documentation/4.0/zh/manual/api

1、向 api_jsonrpc.php 发送HTTP_POST 登录请求,获取身份验证令牌

# -*- coding:utf-8 -*-
import json
import requests url = 'http://172.10.10.2/zabbix/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {
"jsonrpc" : "2.0",
"method" : "user.login",
"params" : {
"user" : "Admin",
"password" : "zabbix"
},
"id" : 1
} ret = requests.post(url, data = json.dumps(post_data), headers = post_headers)
print(ret.text)

输出结果:

 {
  "jsonrpc":"2.0",
  "result":"da336b04d376d914bf06bd2192c4ce3f", #身份验证令牌
  "id":1
}

2、查询所有主机的信息

url = 'http://172.10.10.2/zabbix/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "da336b04d376d914bf06bd2192c4ce3f" #这是第一步获取的身份验证令牌
} ret = requests.post(url, data = json.dumps(post_data), headers = post_headers)
print(ret.text)

输出结果:

{
"jsonrpc": "2.0",
"result": [
{
"hostid": "",
"host": "Zabbix server",
"interfaces": [
{
"interfaceid": "",
"ip": "127.0.0.1"
}
]
}
],
"id": 2
}

3、获取主机组信息

url = 'http://172.10.10.2/zabbix/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": [
"Linux servers"
]
}
},
"auth": "da336b04d376d914bf06bd2192c4ce3f",
"id": 1
} ret = requests.post(url, data = json.dumps(post_data), headers = post_headers)
print(ret.text)

输出结果:

{
"jsonrpc": "2.0",
"result": [
{
"groupid": "",
"name": "Linux servers",
"internal": "",
"flags": ""
}
],
"id": 1
}

4、获取模版信息

url = 'http://172.10.10.2/zabbix/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": [
"Template OS Linux"
]
}
},
"auth": "dfba5d41dc9b46d6525f70af13631cb6",
"id": 1
} ret = requests.post(url, data = json.dumps(post_data), headers = post_headers)
print(ret.text)

输出结果:

{
"jsonrpc": "2.0",
"result": [
{
"proxy_hostid": "",
"host": "Template OS Linux",
"status": "",
"disable_until": "",
"error": "",
"available": "",
"errors_from": "",
"lastaccess": "",
"ipmi_authtype": "-1",
"ipmi_privilege": "",
"ipmi_username": "",
"ipmi_password": "",
"ipmi_disable_until": "",
"ipmi_available": "",
"snmp_disable_until": "",
"snmp_available": "",
"maintenanceid": "",
"maintenance_status": "",
"maintenance_type": "",
"maintenance_from": "",
"ipmi_errors_from": "",
"snmp_errors_from": "",
"ipmi_error": "",
"snmp_error": "",
"jmx_disable_until": "",
"jmx_available": "",
"jmx_errors_from": "",
"jmx_error": "",
"name": "Template OS Linux",
"flags": "",
"templateid": "",
"description": "",
"tls_connect": "",
"tls_accept": "",
"tls_issuer": "",
"tls_subject": "",
"tls_psk_identity": "",
"tls_psk": "",
"proxy_address": "",
"auto_compress": ""
}
],
"id": 1
}

5、创建主机

url = 'http://172.10.10.2/zabbix/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": ""
}
],
"groups": [
{
"groupid": "" #填写第3步获取的组ID
}
],
"templates": [
{
"templateid": "" #填写第4步获取的模板ID
}
],
"macros": [
{
"macro": "{$USER_ID}",
"value": ""
}
],
"inventory_mode": 0,
"inventory": {
"macaddress_a": "",
"macaddress_b": ""
}
},
"auth": "dfba5d41dc9b46d6525f70af13631cb6",
"id": 1
} ret = requests.post(url, data = json.dumps(post_data), headers = post_headers)
print(ret.text)

输出结果:

{
"jsonrpc": "2.0",
"result": {
"hostids": [
""
]
},
"id": 1
}

使用Python调用Zabbix API的更多相关文章

  1. 关于python调用zabbix api接口

    因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...

  2. python 调用zabbix api接口实现主机的增删改查

    python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools()  调用zabbi ...

  3. python 调用zabbix api实现查询主机信息,输出所有主机ip

    之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...

  4. Python调用zabbix API批量添加主机 (读取Excel)

    本文转载自:http://blog.mreald.com/178 Zabbix可以通过自发现添加主机,不过有时候不准确,通过API添加会更加准确! 脚本使用的跟zabbix相关的内容.参考的是zabb ...

  5. python调用zabbix接口实现Action配置

    要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...

  6. 使用Python调用Flickr API抓取图片数据

    Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...

  7. 基于python调用libvirt API

    基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...

  8. Python调用win32 API绘制正弦波

    Python调用win32 API新建窗口与直接创建窗口的流程相同 流程:注册窗口→创建窗口→显示窗口→更新窗口→消息循环 代码: # -*- coding: utf-8 -*- import win ...

  9. 『Python』Python 调用 ZoomEye API 批量获取目标网站IP

    #### 20160712 更新 原API的访问方式是以 HTTP 的方式访问的,根据官网最新文档,现在已经修改成 HTTPS 方式,测试可以正常使用API了. 0x 00 前言 ZoomEye 的 ...

随机推荐

  1. JS权威指南读书笔记(一)

    第一章 JavaScript概述 1 JS是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.   第二章 词法结构 1 JS程序是用Unicode字符集编写的. 2 JS是区 ...

  2. 关于微信小程序分享/转发功能的实现方法

    实现微信小程序分享,可以有两个入口: 1. 小程序右上角菜单自带的分享 这个入口是默认关闭的,需要在当前页面中调用showShareMenu方法,开启分享 onLoad: function () { ...

  3. react-native 沉浸式状态栏

    使用StatusBar即可实现沉浸式,但是必须把背景色设置为透明.否则如果有不同页面的头部颜色不一样的话,导航栏的颜色动画会很怪异,不会是跟着页面一起动画. <StatusBar barStyl ...

  4. 处理request接收参数的中文乱码的问题:

    Ø POST的解决方案: * POST的参数在请求体中,直接到达后台的Servlet.数据封装到Servlet中的request中.request也有一个缓冲区.request的缓冲区也是ISO-88 ...

  5. jquery sortable的拖动方法示例详解

    转自:https://hb-keepmoving.iteye.com/blog/1154618 所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象   u ...

  6. USB驱动分析

    INIT函数: 这是内核模块的初始化函数,其所作的工作只有注册定义好的USB驱动结构体. USB驱动结构体如下: Usb_driver中的probe函数是驱动和设备匹配成功后调用. Usb_drive ...

  7. 【前端适配】vw单位移动端适配方案

    近些年移动端的强势崛起,导致移动端适配越来越重要,个人之前一直使用的是rem进行适配,但是发现并不是非常完美,给力的是大漠老师写了一篇<如何在Vue项目中使用vw实现移动端适配>,比较完美 ...

  8. JAVA笔记整理(五),JAVA中的继承

    1.继承的概念 继承是类与类的一种关系,是一种“is a”的关系 2.继承的好处 子类拥有父类的所有属性和方法,从而实现代码复用 4.方法的重写(Overridding) 如果子类对于继承自父类的方法 ...

  9. jFinal的小知识点总结

    sql批处理 // 批处理sql List<String> sqlList = new ArrayList<String>(); sqlList.add("delet ...

  10. jFinal手册

    JFinal官方文档 https://www.jfinal.com/ w3cschool之JFinal手册 https://www.w3cschool.cn/jfinal/