Zabbix 提供API接口,可以为我们的运维工作提供很大的便利,现将整理并验证的python脚本提供给搭建。
本文是zabbix批量导入主机的python脚本。
导入信息包含:主机名称、可见名称、主机IP、主机组、端口、模版。
本文只支持含一个模版、二个模版的创建,如有其它需要,可自行更改脚本
EXCE模版:
[root@localhost API]# more pil_host1.py
#coding:utf-8
# by abel
# abel_dwh@126.com
import json
import urllib2
from urllib2 import URLError
import sys
import xlrd
class ZabbixTools:
def __init__(self):
self.url = 'http://10.10.50.81/zabbix/api_jsonrpc.php'
self.header = {"Content-Type":"application/json"}
# 获取主机key
def user_login(self):
data = json.dumps({
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": 'Admin',
"password": 'zabbix'
},
"id": 0
})
request = urllib2.Request(self.url, data)
for key in self.header:
request.add_header(key, self.header[key])
try:
result = urllib2.urlopen(request)
except URLError as e:
print "Auth Failed, please Check your name and password:", e.code
else:
response = json.loads(result.read())
result.close()
self.authID = response['result']
return self.authID
# 获取hostid
def host_get(self,hostName):
data = json.dumps({
"jsonrpc":"2.0",
"method":"host.get",
"params":{
"output":["hostid","name"],
"filter":{"host":hostName}
},
"auth":self.user_login(),
"id":1,
})
request = urllib2.Request(self.url, data)
for key in self.header:
request.add_header(key, self.header[key])
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.