zabbix api 設定維護模式

2022-08-10 02:06:18 字數 3797 閱讀 5624

#!/usr/bin/env python

# -*-coding:utf-8-*-

import urllib

import urllib2

import json

import sys

import platform

import time

def auth(uid, username, password, api_url):

"""zabbix認證

:param uid:

:param username:

:param password:

:return:

"""dict_data = {}

dict_data['method'] = 'user.login' # 方法

dict_data['id'] = uid # 使用者id

dict_data['jsonrpc'] = "2.0" # api版本

dict_data['params'] = # 使用者賬號密碼

jdata = json.dumps(dict_data) # 格式化json資料

content = post_data(jdata, api_url) # post json到介面

return content # 返回資訊

def post_data(jdata, url):

"""post方法

:param jdata:

:param url:

:return:

"""response = urllib2.urlopen(req)

# content = response.read()

content = json.load(response)

return content

def create_maintenance(name, hostid, active_since, active_till, period, auth_code, api_url):

"""create maintenance

:return:

"""dict_data = {}

dict_data['method'] = 'maintenance.create' # 方法

dict_data['id'] = uid # 使用者id

dict_data['jsonrpc'] = "2.0" # api版本

dict_data['auth'] = auth_code # api版本

dict_data['description'] = "update" + hostid # api版本

# host

hostids = [hostid]

# timeperiods

timeperiods =

dict_data['params'] = # 使用者賬號密碼

jdata = json.dumps(dict_data) # 格式化json資料

content = post_data(jdata, api_url) # post json到介面

print content

return content # 返回資訊

def get_hostid(hostname, auth_code, uid, api_url):

"""use hostname get hostid

:param hostname:

:param auth:

:param uid:

:return:

"""dict_data = {}

dict_data['method'] = 'host.getobjects' # 方法

dict_data['id'] = uid # 使用者id

dict_data['jsonrpc'] = "2.0" # api版本

dict_data['params'] = # 主機名

dict_data['auth'] = auth_code # auth串

jdata = json.dumps(dict_data) # 格式化json資料

content = post_data(jdata, api_url) # post json到介面

print content

return content # 返回資訊

def logout(uid, auth_code, api_url):

"""退出

:param uid:

:param auth_code:

:return:

"""dict_data = {}

dict_data['method'] = 'user.logout' # 方法

dict_data['id'] = uid # 使用者id

dict_data['jsonrpc'] = "2.0" # api版本

dict_data['params'] =

dict_data['auth'] = auth_code # auth串

jdata = json.dumps(dict_data) # 格式化json資料

content = post_data(jdata, api_url) # post json到介面

return content # 返回資訊

if __name__ == '__main__':

# user info

uid = 1 # 使用者id

username = 'admin'

password = '123456'

api_url = ""

res = auth(1, username, password, api_url) # 認證

if res['result']:

auth_code = res['result'] # 認證串

hostname = platform.node() # 主機名

res = get_hostid(hostname, auth_code, uid, api_url)

if res['result']:

period = 600 # 維護時長

active_since = int(time.time()) # 開始時間

active_till = int(time.time()) + period # 結束時間

hostid = res['result'][0]['hostid'] # 主機

res = create_maintenance('automaintenance_' + hostname + '_' + str(active_since), hostid, active_since, active_till, period,

auth_code, api_url) # 建立維護

logout(uid, auth_code, api_url) # 退出登入

print res

else:

pass

備註:以上指令碼適用於zabbix2.4及以下版本

需要修改uid、username、password、api_url以及res中的auth函式的uid值,通過修改period的值來修改維護時長。

該指令碼通過platform模組獲取到agent的主機名,確保server端的主機名與客戶端一致,且存在,否則設定不成功。

設定完成後可在configuration->maintenance頁面中檢視設定的維護模板。

可以通過在configuration->hosts頁面中檢視是否生效。

面向可維護的設計模式

可維護性是程式的乙個重要指標,良好的可維護性可以幫助程式更快,更容易的改變以適應新的需求,在面向可維護性的程式設計過程中,傳統的模式顯然不那麼實用,這裡總結了幾個更好的設計模式 1 模式 當某個物件比較重要,不希望被直接訪問到時,就可以採用這種模式,這種模式的關鍵在於使用乙個 類繼承與實際被訪問的類...

設定網絡卡混雜模式

關鍵api ioctlsocket 設定雜收模式 巨集 define sio rcvall 0x80000000 0x18000000 1 ip頭 typedef struct ipheader ipheader tcp頭 typedef struct tcpheader tcpheader 流程 ...

Activity啟動模式設定

activity啟動模式設定 activity的四種啟動模式 1.standard 預設啟動模式,每次啟用activity時都會建立activity,並放入任務棧中。2.singletop 如果在任務的棧頂正好存在該activity的例項,就重用該例項,否者就會建立新的例項並放入棧頂 即使棧中已經存...