利用python脚本创建主机

7.1 问题

编写一个remote_comm.py脚本,实现以下功能:

  1. 主机192.168.4.10已安装zabbix_agent
  2. 将该主机填加到zabbix监控的主机中
  3. 主机属于Linux Servers组

7.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:编写脚本,检索组

1)从zabbix官方文档中使用hostgroup.get 方法获取主机组请求,如图-9所示:

官方文档地址如下:

https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/hostgroup/get

利用python脚本创建主机_第1张图片

图-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所示:

利用python脚本创建主机_第2张图片

图-16

步骤二:编写脚本,检索模板

1)从zabbix官方文档中使用template.get 方法获取模板请求,如图-11所示:

官方文档地址如下:

https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/template/get

利用python脚本创建主机_第3张图片

图-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所示:

利用python脚本创建主机_第4张图片

图-18

步骤三:编写脚本,创建主机

1)从zabbix官方文档中使用host.create方法获取创建主机请求,如图-13所示:

官方文档地址如下:

https://www.zabbix.com/documentation/3.4/zh/manual/api/reference/host/create

利用python脚本创建主机_第5张图片

图-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所示:

利用python脚本创建主机_第6张图片

图-20

你可能感兴趣的:(Python,Python脚本,Devops)