编写一个remote_comm.py脚本,实现以下功能:
实现此案例需要按照如下步骤进行。
步骤一:编写脚本,检索组
1)从zabbix官方文档中使用hostgroup.get 方法获取主机组请求,如图-9所示:
官方文档地址如下:
https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/hostgroup/get
图-15
2)编写get_hostgroup.py文件,检索组
copytext
[root@localhost day12]# vim get_hostgroup.py
#!/usr/bin/env python3
import requests
import json # python中的dict类型要转换为json格式的数据需要用到json库
#要访问的网址
url = 'http://192.168.4.2/zabbix/api_jsonrpc.php'
#请求头部信息
headers = {'Content-Type': 'application/json-rpc'}
# data是从官方文档处获得的
data = {
# API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0
"jsonrpc": "2.0",
"method": " hostgroup.get ", #调用的API方法
# params将被传递给API方法的参数
"params": {
"output": "extend",
},
"auth": "0424bd59b807674191e7d77572075f33", #之前获取到的令牌
"id": 1 #请求的任意标识符
}
#使用requests发送请求,访问指定网站,向url发送data请求,r收到的返回响应为json格式
#将data转成json格式
r = requests.post(url, headers=headers, data=json.dumps(data))
ginfo = r.json()
print(ginfo['result']) #打印主机组信息
for item in ginfo['result']:
print(item['groupid'], item['name']) #打印主机组id和名称
[root@localhost day12]# vim get_hostgroup.py
#!/usr/bin/env python3
import requests
import json # python中的dict类型要转换为json格式的数据需要用到json库
#要访问的网址
url = 'http://192.168.4.2/zabbix/api_jsonrpc.php'
#请求头部信息
headers = {'Content-Type': 'application/json-rpc'}
# data是从官方文档处获得的
data = {
# API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0
"jsonrpc": "2.0",
"method": " hostgroup.get ", #调用的API方法
# params将被传递给API方法的参数
"params": {
"output": "extend",
},
"auth": "0424bd59b807674191e7d77572075f33", #之前获取到的令牌
"id": 1 #请求的任意标识符
}
#使用requests发送请求,访问指定网站,向url发送data请求,r收到的返回响应为json格式
#将data转成json格式
r = requests.post(url, headers=headers, data=json.dumps(data))
ginfo = r.json()
print(ginfo['result']) #打印主机组信息
for item in ginfo['result']:
print(item['groupid'], item['name']) #打印主机组id和名称
pop-up
3)测试脚本执行,获取了主机名称及id,如图-10所示:
图-16
步骤二:编写脚本,检索模板
1)从zabbix官方文档中使用template.get 方法获取模板请求,如图-11所示:
官方文档地址如下:
https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/template/get
图-17
2)编写get_template.py文件
copytextpop-up
[root@localhost day12]# vim get_template.py
#!/usr/bin/env python3
import requests
import json # python中的dict类型要转换为json格式的数据需要用到json库
#要访问的网址
url = 'http://192.168.4.2/zabbix/api_jsonrpc.php'
#请求头部信息
headers = {'Content-Type': 'application/json-rpc'}
# data是从官方文档处获得的
data = {
# API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0
"jsonrpc": "2.0",
"method": "template.get", #调用的API方法
# params将被传递给API方法的参数
"params": {
"output": "extend",
},
"auth": "0424bd59b807674191e7d77572075f33", #之前获取到的令牌
"id": 1 #请求的任意标识符
}
#使用requests发送请求,访问指定网站,向url发送data请求,r收到的返回响应为json格式
#将data转成json格式
r = requests.post(url, headers=headers, data=json.dumps(data))
#将json格式解码
tinfo = r.json()
#print(tinfo) #打印模板信息
for item in tinfo['result']:
print(item['templateid'], item['host']) #打印模板名及id
[root@localhost day12]# vim get_template.py
#!/usr/bin/env python3
import requests
import json # python中的dict类型要转换为json格式的数据需要用到json库
#要访问的网址
url = 'http://192.168.4.2/zabbix/api_jsonrpc.php'
#请求头部信息
headers = {'Content-Type': 'application/json-rpc'}
# data是从官方文档处获得的
data = {
# API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0
"jsonrpc": "2.0",
"method": "template.get", #调用的API方法
# params将被传递给API方法的参数
"params": {
"output": "extend",
},
"auth": "0424bd59b807674191e7d77572075f33", #之前获取到的令牌
"id": 1 #请求的任意标识符
}
#使用requests发送请求,访问指定网站,向url发送data请求,r收到的返回响应为json格式
#将data转成json格式
r = requests.post(url, headers=headers, data=json.dumps(data))
#将json格式解码
tinfo = r.json()
#print(tinfo) #打印模板信息
for item in tinfo['result']:
print(item['templateid'], item['host']) #打印模板名及id
3)测试脚本执行,获取了模板名称及id,如图-12所示:
图-18
步骤三:编写脚本,创建主机
1)从zabbix官方文档中使用host.create方法获取创建主机请求,如图-13所示:
官方文档地址如下:
https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/host/create
图-19
2)编写get_host.py文件
copytextpop-up
[root@localhost day12]# vim get_host.py
#!/usr/bin/env python3
import requests
import json # python中的dict类型要转换为json格式的数据需要用到json库
#要访问的网址
url = 'http://192.168.4.2/zabbix/api_jsonrpc.php'
#请求头部信息
headers = {'Content-Type': 'application/json-rpc'}
# data是从官方文档处获得的
data = {
# API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0
"jsonrpc": "2.0",
"method": "user.login", #调用的API方法
# params将被传递给API方法的参数
"params": {
"host": "mylinux", #要创建的主机的名称
"interfaces": [
{
"type": 1, # 1 agent; 2 SNMP; 3 IPMI; 4 JMX
"main": 1, # 该接口是否在主机上用作默认接口。1 默认
"useip": 1, # 是否应通过IP进行连接
"ip": "192.168.4.3",
"dns": "",
"port": "10050" #ip已装zabbix_agent,端口号为10050
}
],
"groups": [
{
"groupid": "2" #之前检索到的主机组id
}
],
"templates": [
{
"templateid": "10001" #之前检索到的模板id
}
],
"inventory_mode": 0, #资产信息,0为停用
},
"auth": "0424bd59b807674191e7d77572075f33", #之前获取到的令牌
"id": 1 #请求的任意标识符
}
#使用requests发送请求,访问指定网站,向url发送data请求,r收到的返回响应为json格式
#将data转成json格式
r = requests.post(url, headers=headers, data=json.dumps(data))
[root@localhost day12]# vim get_host.py
#!/usr/bin/env python3
import requests
import json # python中的dict类型要转换为json格式的数据需要用到json库
#要访问的网址
url = 'http://192.168.4.2/zabbix/api_jsonrpc.php'
#请求头部信息
headers = {'Content-Type': 'application/json-rpc'}
# data是从官方文档处获得的
data = {
# API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0
"jsonrpc": "2.0",
"method": "user.login", #调用的API方法
# params将被传递给API方法的参数
"params": {
"host": "mylinux", #要创建的主机的名称
"interfaces": [
{
"type": 1, # 1 agent; 2 SNMP; 3 IPMI; 4 JMX
"main": 1, # 该接口是否在主机上用作默认接口。1 默认
"useip": 1, # 是否应通过IP进行连接
"ip": "192.168.4.3",
"dns": "",
"port": "10050" #ip已装zabbix_agent,端口号为10050
}
],
"groups": [
{
"groupid": "2" #之前检索到的主机组id
}
],
"templates": [
{
"templateid": "10001" #之前检索到的模板id
}
],
"inventory_mode": 0, #资产信息,0为停用
},
"auth": "0424bd59b807674191e7d77572075f33", #之前获取到的令牌
"id": 1 #请求的任意标识符
}
#使用requests发送请求,访问指定网站,向url发送data请求,r收到的返回响应为json格式
#将data转成json格式
r = requests.post(url, headers=headers, data=json.dumps(data))
3)测试脚本执行,运行脚本成功后,主机创建成功,如图-20所示:
图-20