使用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 的 ...
随机推荐
- Flask基础原理
一.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架. Werkzeug的本质是Socket服务端,用于接收http请求并对请 ...
- Fortify漏洞之Sql Injection(sql注入)
公司最近启用了Fortify扫描项目代码,报出较多的漏洞,安排了本人进行修复,近段时间将对修复的过程和一些修复的漏洞总结整理于此! 本篇先对Fortify做个简单的认识,同时总结一下sql注入的漏洞! ...
- PLSQL Developer新建表空间
转自:https://www.cnblogs.com/juddhu/archive/2012/03/20/2408499.html 通过pl/sql登录到Oracle数据库上,然后执行菜单:文件/新建 ...
- centos6.x下让redis以服务方式运行
1.从官网下载redis-2.8.9.tar.gz之后,将redis解压在/usr/local下,目录是redis-2.8.9,然后按照官网给出的办法安装redis即可. 2.安装完在redis-2. ...
- 协议形式化安全分析 Scyther 并非所有协议可以照抄就搬
1.Scyther 形式化分析工具可以对协议进行形式化描述,验证协议的机密性和可认证性是否存在安全威胁.在攻击时支持会话轮数无限次执行,同时支持在强安全模型和Delov-Yao模型.在对要形式化分析的 ...
- IAR 为 STM32新建工程模板(最详细)
今天给小伙伴分享一篇给stm32新建工程模版 1.首先打开IAR,就是这个样子 2.再建一个目录文件夹 3.建立一个工作空间,以及建好工作空间如右图所示 4.接下来建立工程,Project------ ...
- 数据库管理工具-Navicat Premium 12
首先感谢下github上大佬,我才能使用这个软件.也可以直接浏览https://github.com/DoubleLabyrinth/navicat-keygen进行安装,非常详细. 1.https: ...
- unity之中级必备知识
Mask,Scroll Rect实现图拖拽:新建Imag,添加Mask,Scroll Rect组件:新建Image,托放在Scroll下的Content:新建Scroll Bar实现滚动条的同步:托放 ...
- linux网络编程之system v信号量(二)
今天迎来元旦假期的最后一天了,过得好快~昨天跟小伙伴们在军都滑雪陪儿爽,虽说上了两回中级道都摔得异常的惨烈,但是在初级道上学习"s"转弯还是有一些小心得,可以在要往高手迈进的前提, ...
- evpp 上传文件问题转
背景 因为项目需求,需要使用360的evpp库,来实现一个接口,支持文件上传. 实际操作过程中,发现了一些问题,记录下来. 前端文件上传方式 简单的使用input标签 <body> < ...