利用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

圖-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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章