获取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
输出: