zabbix-----api (认证)得到host

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 import json
 4 import urllib2
 5 import sys
 6 from urllib2 import Request , urlopen ,URLError,HTTPError
 7 zabbix_url="http://112.x.x.x/zabbix/api_jsonrpc.php"
 8 zabbix_header = {"Content-Type":"application/json"}
 9 zabbix_user = "admin"
10 zabbix_pass = "admin"
11 zabbix_code = ""
12 #用户认证得到一个session (result对应的结果)和id
13 #下面生成一个json格式的数据
14 auth_data = json.dumps(
15     {"jsonrpc":"2.0",
16      "method":"user.login",
17      "params":
18          {
19              "user":zabbix_user,
20              "password":zabbix_pass
21 
22          },
23      "id":0
24 })
25 
26 request = urllib2.Request(zabbix_url,auth_data)
27 for key in zabbix_header:
28     request.add_header(key,zabbix_header[key])
29 #认证获取session 和id
30 try:
31     result = urllib2.urlopen(request)
32 except HTTPError,e:
33     print 'The server couldn\'t fulfill the request,Error code:',e.code
34 except URLError,e:
35     print 'we are faild search a server reason',e.reason
36 else:
37     #loads变成字典
38     response=json.loads(result.read())
39 #得到返回数据{u'jsonrpc': u'2.0', u'result': u'08af97bd25f6183d8d49d29f1121bd9b', u'id': 0}
40     result.close()
41     if 'result' in response:
42         auth_code=response['result']
43     else:
44         print response['error']['data']
45 
46 json_data={
47     "method":"host.get",   #方法
48     "params":{
49         "output":"extend",
50     }
51 }
52 json_base={
53     "jsonrpc":"2.0",
54     "auth":auth_code,
55     "id":1
56 }
57 json_data.update(json_base)
58 #得到如下
59 '''
60 json_data={
61 'jsonrpc': '2.0',
62  'params':
63  {
64  'output': 'extend'
65  },
66   'method': 'host.get', 'auth': '08af97bd25f6183d8d49d29f1121bd9b', 'id': 1}
67 '''
68 if len(auth_code) == 0:
69     sys.exit(1)
70 if len(auth_code) != 0:
71     get_host_data = json.dumps(json_data)
72     request = urllib2.Request(zabbix_url,get_host_data)
73     for key in zabbix_header:
74        request.add_header(key,zabbix_header[key])
75     try:
76         result = urllib2.urlopen(request)
77     except URLError as e:
78         if hasattr(e,'reason'):
79             print "we faild to reach a server."
80             print 'reason:',e.reason
81         elif hasattr(e,'code'):
82             print 'the server could no fulfill the request.'
83             print 'Error code:',e.code
84     else:
85         response=json.loads(result.read())
86         result.close()
87         print response
88         print "number of Hosts:",len(response['result'])

 

posted @ 2016-10-15 21:57  Dicky_Zhang  阅读(470)  评论(0)    收藏  举报