zabbix-python api(一)

获取zabbix token

#!/usr/bin/env python
#coding=utf-8
import json
import urllib2


def Gettoken(server_ip,username,passwd,data=1):
    # based url and required header
    url = "http://%s/zabbix/api_jsonrpc.php"%server_ip
    header = {"Content-Type":"application/json"}
    # auth user and password
    if data ==1:
       data = json.dumps(
       {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
        "user": username,
        "password": passwd
       },
        "id": 0
       })
    # create request object
    request = urllib2.Request(url,data)
    for key in header:
       request.add_header(key,header[key])
    # auth and get authid
    try:
        result = urllib2.urlopen(request)
    except  Exception, e:
        print "Auth Failed, Please Check Your Name AndPassword:",e.code
    else:
        response = json.loads(result.read())
        result.close()
        print"Auth Successful. The Auth ID Is:",response['result']
        return response['result']

if __name__ == "__main__":
   Gettoken('192.168.0.202','Admin','zabbix')

在写一个方法的py文件,这个就按照类的思想来实现先关代码。在这个文件中写入不同的方法 。获取所有主机的方法

#!/usr/bin/env python
import json
import token
token_num=token.Gettoken('192.168.0.202','Admin','zabbix')


def get_hosts():
   data = json.dumps(
    {
      "jsonrpc": "2.0",
      "method": "host.get",
      "params":{
      "output":["hostid","name"],
      "filter":{"host":""}
    },
    "auth":token_num,
    "id": 1,
    })
   result=token.Gettoken('192.168.0.202','Admin','zabbix',data )
   print result
   return result

输出:

原文地址:https://www.cnblogs.com/menkeyi/p/5913312.html