使用Python调用Zabbix API
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的更多相关文章
- 关于python调用zabbix api接口
因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...
- python 调用zabbix api接口实现主机的增删改查
python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools() 调用zabbi ...
- python 调用zabbix api实现查询主机信息,输出所有主机ip
之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...
- Python调用zabbix API批量添加主机 (读取Excel)
本文转载自:http://blog.mreald.com/178 Zabbix可以通过自发现添加主机,不过有时候不准确,通过API添加会更加准确! 脚本使用的跟zabbix相关的内容.参考的是zabb ...
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- 使用Python调用Flickr API抓取图片数据
Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...
- 基于python调用libvirt API
基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...
- Python调用win32 API绘制正弦波
Python调用win32 API新建窗口与直接创建窗口的流程相同 流程:注册窗口→创建窗口→显示窗口→更新窗口→消息循环 代码: # -*- coding: utf-8 -*- import win ...
- 『Python』Python 调用 ZoomEye API 批量获取目标网站IP
#### 20160712 更新 原API的访问方式是以 HTTP 的方式访问的,根据官网最新文档,现在已经修改成 HTTPS 方式,测试可以正常使用API了. 0x 00 前言 ZoomEye 的 ...
随机推荐
- 单例模式详解以及需要注意的地方(Singleton)
单例模式,顾名思义,就是在Java程序中只有唯一一个实例,这样做的好处是可以在不需要多个实例的对象采用单例模式可以节省内存,否则会造成不必要的内存浪费.单例模式的定义为:保证一个类只有一个实例,自己可 ...
- HibernateTemplate的queryForList(sql)用法
转自:https://blog.csdn.net/huanghaijin/article/details/7763580 List<User> list = jdbcTemplate.q ...
- JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止
JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止 背景 当单线程的程序发生一个未捕获的异常时我们可以采用try....catch进行异常的捕获,但是在多线程环境 ...
- Java原子操作类汇总(2)
当程序更新一个变量时,如果是多线程同时更新这个变量,可能得到的结果与期望值不同.比如:有一个变量i,A线程执行i+1,B线程也执行i+1,经过两个线程的操作后,变量i的值可能不是期望的3,而是2.这是 ...
- web框架(1)-搭建开发环境
一.python安装 首先,确认系统安装的Python版本 $ python3 -V Python 3.6.3 未安装python,请转至:python安装 二.安装第三方依赖库 1.异步框架aioh ...
- 华为SDN:解决传统网络3大问题
转:http://mp.ofweek.com/tele/a145613326756 科技潮人 2013-08-05 14:20 传统网络之困 互联网爆炸式增长,除了规模和发展速度远超之前所有曾出现的数 ...
- java后端处理高并发
一个登陆页面可能会被很多账户同时登陆或者注册,那么我们就好处理这些并发,否则降低程序的使用率,甚至程序奔溃,下面一段代码处理程序的高并发效果不错. /** *@author xiaoxie *@dat ...
- PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
PHP开启目录引索 一. 前言 不知为何对nginx情有独钟, 最近练习php, 为了方便写代码, 便想要开启nginx的目录索引功能, 显然不如Apache开启的方便, 几次尝试都崩了... 我这个 ...
- Windows下无法新建文件夹
原文链接:https://www.jianshu.com/p/ee3205d5b9c9
- Robot Framework--用例、数据、流程分离例子
如果想改变输入框的输入词,则需要不停的复制case,为了减少冗余,可以做一个简单的分层,把搜索流程剥离成一个关键字,然后再不同的case中调用这个关键字,然后传递不同的参数,以进行不同数据在同一流程下 ...