#!/usr/bin/env python3

#coding=utf-8

import json
import requests
#from urllib import requests, parse,error # based url and required header #url = "http://sg-zabbix.upliveapp.com/zabbix/api_jsonrpc.php" class zabbixapi:
'''获得token'''
def __init__(self):
self.url = 'http://xxxxxxxx/zabbix/api_jsonrpc.php'
self.headers = {'Content-Type': 'application/json'}
auth = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "xxxxx", ###验证
"password": "xxxxx"
},
"id": 1,
"auth": None,
}
response = requests.post(self.url, data=json.dumps(auth), headers=self.headers)
self.authid = json.loads(response.text)['result']
#print(self.authid) ###得到所有服务器和ip信息
def get_hosts(self):
#print("12313")
neirong={
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": self.authid
}
data = json.dumps(neirong)
#print(data)
response = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)
dict = json.loads(response.content)
#print(dict['result'])
data = dict['result']
return dict['result']
#print(response.text)
###整理信息,输出想要的信息,组合成字典
def getProc(data):
dict = {}
list = data
print(list)
for i in list:
host = i['host']
inter = i['interfaces']
for j in inter:
ip = j['ip']
dict[host] = ip return dict # 排序ip列表
def getData(dict):
data = dict
ip_list = []
for key in data.keys():
ip = data[key]
ip_list.append(ip)
ip_list = list(set(ip_list))
ip_list.sort()
return ip_list # 整理输出ip
def getGroup(ip_list):
ip_group = {}
ips = ip_list
for i in ips:
print(i) if __name__ == "__main__":
p = zabbixapi()
data = p.get_hosts()
hosts = getProc(data)
#print(hosts)
ip_list = getData(hosts)
getGroup(ip_list)

python 通过zabbix api获得所有主机的ip的更多相关文章

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

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

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

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

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

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

  4. 关于python调用zabbix api接口

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

  5. 03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查

    目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...

  6. Python通过Zabbix API获得数据

    Zabbix API查询:https://www.zabbix.com/documentation/2.0/manual/appendix/api/api import json,urllib2 fr ...

  7. 使用Python调用Zabbix API

    Zabbix API官方文档: https://www.zabbix.com/documentation/4.0/zh/manual/api 1.向 api_jsonrpc.php 发送HTTP_PO ...

  8. 通过Zabbix API实现对主机的增加(无主机资产的添加和带主机资产的添加)、删除、获取主机id、获取模板id、获取组id

    config.yaml存储zabbix的信息(主要包括zabbix server的url .请求头部.登陆的用户名密码) Zabbix_Config: zabbix_url: http://192.1 ...

  9. Python 操作Zabbix API 获取ERROR级别告警信息并打印

    1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去.(合成语音及播报已经完成) 2.现实:整理zabbix告警级别,将不太重要的告警放到ER ...

随机推荐

  1. Servlet源码分析

    Servlet API的核心就是javax.servlet.Servlet接口,所有的Servlet 类(抽象的或者自己写的)都必须实现这个接口.在Servlet接口中定义了5个方法,其中有3个方法是 ...

  2. 机器学习技法笔记:Homework #6 AdaBoost&Kernel Ridge Regression相关习题

    原文地址:http://www.jianshu.com/p/9bf9e2add795 AdaBoost 问题描述 程序实现 # coding:utf-8 import math import nump ...

  3. 拾遗:Gentoo 使用笔记

    零.使用 Git 源 mkdir /etc/portage/repos.conf cd !$ vi gentoo.conf [DEFAULT] main-repo = gentoo [gentoo] ...

  4. 如何省略.jsx文件名

    在webpack.config.js文件夹中module.exports中添加: resolve:{ extensions:[".js", ".jsx", &q ...

  5. 自定义hive文件和记录格式及文本文件数据编码

    (1)一段 建表语句: [ROW FORMAT row_format] [STORED AS file_format] | STORED BY 'storage.handler.class.name' ...

  6. C#WinForm 窗体单例模式 反射单例

    做了个mdi窗体 原以为指定一下MDIParent就可以了 没想到多次点击会出现多个窗体的现像 所以用到了单例模式 做法是这样的(学习出处:连接) 1.在子窗体声明一个子窗体类型的私有静态变量 并把子 ...

  7. WebServer Project-01-反射

    简介 上网浏览网页,离不开服务器,客户请求页面,服务器响应页面,响应的内容是根据每个web请求来产生动态内容的,其内部即启动多个线程来产生不同内容.这种请求响应的交互,都是基于HTTP协议的. 当然现 ...

  8. windows IIS FTP 不支持创建多级目录

    昨天因为这个事情搞了好久,因为客户那边使用的是IIS 上的FTP ,想着都差不多试着运行,结果竟然报错,说"错误550 文件不可用" 是在GetResponse()出现的异常,我用 ...

  9. python--接口类与抽象类

    一. 继承有两种用途: """ 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了 ...

  10. .Net中Task使用来提高代码执行效率

    技术不断更新迭代,更高效的执行效率越来越被重视,所以对Task的使用进行了简单使用做了整理与大家分享. .Net 中有了Task后使多线程编程更简单使用和操作,下面粘上代码进行简单说明: /// &l ...