使用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 的 ...
随机推荐
- MySQL中You can't specify target table '表名'('sn_app_label') for update in FROM clause错误解决办法
在有些时候有级联关系的数据放在了同一张表中,在写sql语句的时候可能会遇到这样的场景:我要插入两条数据,第一条是父节点,第二条是子节点,关联关系是父节点的自增长id:在写这样的sql语句时有可能就会出 ...
- R_数据视觉化处理_中阶_05
条形图:条形图通过垂直或水平的条形展示了类型变量的分布(频数).最简单的用法为:barplot(height),height为矩阵或向量. horiz=TRUE选项:表示水平,在此之前先使用table ...
- 【转载】网站配置Https证书系列(三):IIS网站设置Http链接直接跳转Https安全连接
Http链接请求是以明文的方式传输,在传输的过程中很容易被篡改数据,一个典型的例子就是运营商的网络劫持注入广告信息等,而Https请求则是安全加密的请求,报文数据以密文的形式进行传输.当IIS网站配置 ...
- JavaScript常用节点类型
一.常用节点类型: nodeType:节点类型 nodeName:节点名称 nodeValue:节点值 1.查看节点类型(控制台操作): 获取元素:var p = document.getElemen ...
- ceph集群部署(基于jewel版)
环境 两个节点:ceph1.ceph2 ceph1: mon.mds.osd.0.osd.1 ceph2: osd.2.osd.3 网络配置: ceph1: 管理网络,eth0,10.0.0.20 存 ...
- ubuntu18.04 为应用程序添加桌面图标
一.桌面图标位置 Lniux下桌面图标储存路径为:/usr/share/applications 二.桌面图标格式 所有桌面图标格式均为desktop,即名为XXX.desktop 三.编辑内容(常用 ...
- javascript_05-操作符
一元运算符 a++和++a //5 2 3 var a =1; var b = ++a + ++a; console.log(b) //4 1 3 var a =1; var b = a++ + ++ ...
- JAVA笔记整理(六),JAVA中的多态
JAVA引用变量有两个类型:一个是编译时类型,一个运行时类型 编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定.如果编译时类型和运行时类型不一样,就形成了多态. 因为子类其 ...
- KVM虚拟机的管理
1. 查看KVM虚拟机配置文件及运行状态 (1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/ autostart目录是配置kvm虚拟机开机自启动目录 (2) virsh命令 ...
- CUDA中确定你显卡的thread和block数
CUDA中确定你显卡的thread和block数 在进行并行计算时, 你的显卡所支持创建的thread数与block数是有限制的, 因此, 需要自己提前确定够用, 再进行计算, 否则, 你需要改进你的 ...