1. #!/usr/bin/env python3
  2.  
  3. #coding=utf-8
  4.  
  5. import json
    import requests
    #from urllib import requests, parse,error
  6.  
  7. # based url and required header
  8.  
  9. #url = "http://sg-zabbix.upliveapp.com/zabbix/api_jsonrpc.php"
  10.  
  11. 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)
  12.  
  13. ###得到所有服务器和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)
  1. ###整理信息,输出想要的信息,组合成字典
  1. 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
  2.  
  3. return dict
  4.  
  5. # 排序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
  6.  
  7. # 整理输出ip
    def getGroup(ip_list):
    ip_group = {}
    ips = ip_list
    for i in ips:
    print(i)
  8.  
  9. 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. ICPC Asia Nanning 2017 I. Rake It In (DFS+贪心 或 对抗搜索+Alpha-Beta剪枝)

    题目链接:Rake It In 比赛链接:ICPC Asia Nanning 2017 Description The designers have come up with a new simple ...

  2. Codeforces 1189B Number Circle

    题目链接:http://codeforces.com/problemset/problem/1189/B AC代码: #include<bits/stdc++.h> using names ...

  3. Cyclical Quest CodeForces - 235C 后缀自动机

    题意: 给出一个字符串,给出一些子串,问每个子串分别在母串中圆环匹配的次数, 圆环匹配的意思是将该子串拆成两段再首位交换相接的串和母串匹配,比 如aaab变成baaa,abaa,aaba再进行匹配. ...

  4. 2018-10-31-WPF-在触摸线程等待主线程窗口关闭会让主线程和触摸线程相互等待

    title author date CreateTime categories WPF 在触摸线程等待主线程窗口关闭会让主线程和触摸线程相互等待 lindexi 2018-10-31 9:30:9 + ...

  5. linux6查看时间同步服务器的匹配源

    当服务器时间与设定好的同步时间源的时间有差异的时候,一般都需要先查看本机的时间同步服务功能是否在正常的运转,以及同步的时间源是哪里,在这里为大家提供一个检查时间用的命令. linux/centos 6 ...

  6. FastStone Capture 文件名设置小记录

    我使用的FastStone Capture 的文件名设置 文件名称模板 fs$Y$M$D#####@ 起始于: [1] 重置 [ 选中] 新的一天自动重置为1

  7. vue computed和methods 计算属性和侦听器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 使用canvas绘制6X6调色盘

    <canvas id="canvas" height="150" width="150"></canvas> var ...

  9. js中变量对象和活动对象的区别 闭包时的区别

    变量对象:就是执行环境中包含了所有的变量和函数的对象 活动对象:正在被执行或引用的变量和函数 在上述代码中 ,全局定义了函数compare()和变量result,后台会创建一个作用域链(scope c ...

  10. thinkphp session支持

    系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成,该函数可以完成Session的设置.获取.删除和管理操作. session初始化设置 如果session ...