[Shell] 纯文本查看 复制代码
#!/usr/bin/env python
#coding=utf-8
import json,urllib2
#url and url header
zabbix_url="http://zabbix.test.org/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}
zabbix_user = "admin"
zabbix_pass = "123456"
#auth user adn password
auth_data = json.dumps(
{
"jsonrpc":"2.0",
"method":"user.login",
"params": {
"user":zabbix_user,
"password":zabbix_pass
},
"id":0
})
# create request object
request = urllib2.Request(zabbix_url,auth_data)
for key in zabbix_header:
request.add_header(key,zabbix_header[key])
#auth and get authid
try:
result = urllib2.urlopen(request)
except URLError as e:
print "认证失败,请检查用户名和密码是否正确",e.code
else:
response=json.loads(result.read())
result.close()
auth_code=response['result']
# request json
get_host_data = json.dumps(
{
"jsonrpc":"2.0",
"method":"host.get",
"params":{
"output":["hostid","name","available","maintenance_status","status","error"],
#"filter":{"host":""}
},
#auth string
"auth":auth_code,
"id":1,
})
# create request object
request = urllib2.Request(zabbix_url,get_host_data)
for key in zabbix_header:
request.add_header(key,zabbix_header[key])
# get host list
try:
result = urllib2.urlopen(request)
except URLError as e:
if hasattr(e, 'reason'):
print 'We failed to reach a server.'
print 'Reason: ', e.reason
elif hasattr(e, 'code'):
print 'The server could not fulfill the request.'
print 'Error code: ', e.code
else:
response = json.loads(result.read())
result.close()
print "Number Of Hosts: ", len(response['result'])
for host in response['result']:
print "Host ID:",host['hostid'],"Host Name:",host['name'],"Status",host['status']