tedwhy 发表于 2017-12-31 10:44:50

API调用数据流程

  1.   user.login方法获取zabbix server的认证结果官方地址:https://www.zabbix.com/documentation/2.2/manual/api/reference/user/login
  python脚本:
1  2
  3
  4
  5
  6
  7
  8
  9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
# cat auth.py  #!/usr/bin/env python2.7
  #coding=utf-8
  import json
  import urllib2
  # based url and required header
  url = "http://1.1.1.1/zabbix/api_jsonrpc.php"
  header = {"Content-Type":"application/json"}
  # auth user and password
  data = json.dumps(
  {
  "jsonrpc": "2.0",
  "method": "user.login",
  "params": {
  "user": "Admin",
  "password": "zabbix"
  },
  "id": 0
  })
  # create request object
  request = urllib2.Request(url,data)
  for key in header:
  request.add_header(key,header)
  # auth and get authid
  try:
  result = urllib2.urlopen(request)
  except URLError as e:
  print "Auth Failed, Please Check Your Name AndPassword:",e.code
  else:
  response = json.loads(result.read())
  result.close()

  print"Auth Successful. The Auth>  python脚本运行结果:
1  2
# python auth.py
  Auth Successful. The Auth>  curl命令:
1  2
  3
curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrpc":  "2.0","method":"user.login","params":{"user":"admin","password":"zabbix"},"auth":
  null,"id":0}' http://1.1.1.1/zabbix/api_jsonrpc.php
  curl命令运行结果:
1{"jsonrpc":"2.0","result":"b895ce91ba84fe247e444817c6773cc3","id":0}  比较来看,采用脚本可以有更多的灵活性,而基于CURL的方式,对结果的处理不是很方便。原理则都是相通的。
  除了这些获取信息以外,采用API调用同样可以进行创建操作,更新操作和删除操作等等。这也很容易让我们联想起数据库操作,当然比较这些采用API
  调用获取结果的方式,也不能忘掉这种最直接而危险的方式。在开始讨论中已经提到,Zabbix现在自带的前端实现部分是采用数据库操作,部分是基于API
  调用。
API调用数据流程

[*]数据流程
  下面的流程图代表了Zabbix API
  工作的典型工作流。验证(方法user.login)是获取验证ID的强制步骤。这个ID又允许我们调用API提供的任何权限允许的方法来进行操作。在之
  前的例子中没有提到user.logout方法,这也是一次验证ID能够重复使用的原因所在。使用user.logout方法后将会使验证ID失效,后面
  的操作将不能再使用此ID。
页: [1]
查看完整版本: API调用数据流程