mirror of
https://github.com/limosek/zaf.git
synced 2024-11-21 18:09:06 +01:00
Added zabbix API functions
This commit is contained in:
parent
531b3c31f6
commit
c2864f8d4c
74
lib/zbxapi.lib.sh
Executable file
74
lib/zbxapi.lib.sh
Executable file
@ -0,0 +1,74 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Zabbix API related functions
|
||||
# Parameters in global variables ZAF_ZBX_API_*
|
||||
# returns auth on stdout or false
|
||||
zaf_zbxapi_login(){
|
||||
local authstr
|
||||
local user
|
||||
local pass
|
||||
|
||||
[ -z "$ZAF_ZBXAPI_URL" ] || [ -z "$ZAF_ZBXAPI_USER" ] || [ -z "$ZAF_ZBXAPI_PASS" ] && zaf_err "Zabbix Api parameters not set!"
|
||||
authstr='{
|
||||
"params" : {
|
||||
"password" : "'$ZAF_ZBXAPI_PASS'",
|
||||
"user" : "'$ZAF_ZBXAPI_USER'"
|
||||
},
|
||||
"id" : 0,
|
||||
"jsonrpc" : "2.0",
|
||||
"method" : "user.login"
|
||||
}'
|
||||
zaf_dbg "Zabbix API login: $authstr"
|
||||
ZAF_ZBXAPI_AUTH=$(curl -s -f -L -X POST -H 'Content-Type: application/json-rpc' -d "$authstr" "$ZAF_ZBXAPI_URL" | json_pp | grep result | cut -d ':' -f 2 | tr -d '", ') || { zaf_err "Bad zabbix API parameters, cannot login."; }
|
||||
zaf_dbg "Logged into zabbix API ($ZAF_ZBXAPI_AUTH)"
|
||||
}
|
||||
|
||||
zaf_zbxapi_getxml() {
|
||||
sed -e 's/\({"jsonrpc":"2.0","result":\)"\(.*\)",\("id":.*\)/\n\2\n/g' | sed -r 's/\\([/"])/\1/g'
|
||||
}
|
||||
|
||||
# $1 host group or empty
|
||||
zaf_zbxapi_gethosts() {
|
||||
local hstr
|
||||
local hgroup
|
||||
local filter
|
||||
|
||||
hgroup="$1"
|
||||
[ -n "$hgroup" ] && filter='"filter": { "hostgroup": [ "'$hgroup'" ] },'
|
||||
hstr='{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "host.get",
|
||||
"auth": "'$ZAF_ZBXAPI_AUTH'",
|
||||
'$filter'
|
||||
"id": 2
|
||||
}'
|
||||
zaf_dbg "Zabbix Get hosts: $hstr"
|
||||
curl -s -f -L -X POST -H 'Content-Type: application/json-rpc' -d "$hstr" "$ZAF_ZBXAPI_URL" | tr ',' '\n' | grep hostid | cut -d '"' -f 4
|
||||
}
|
||||
|
||||
# Host backup
|
||||
# $1 hostid
|
||||
zaf_zbxapi_backuphost(){
|
||||
local bkpstr
|
||||
|
||||
host="$1"
|
||||
bkpstr='
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "configuration.export",
|
||||
"params": {
|
||||
"options": {
|
||||
"hosts": [
|
||||
"'$host'"
|
||||
]
|
||||
},
|
||||
"format": "xml"
|
||||
},
|
||||
"auth": "'$ZAF_ZBXAPI_AUTH'",
|
||||
"id": 1
|
||||
}'
|
||||
zaf_dbg "Zabbix API backup host: $bkpstr"
|
||||
curl -s -f -L -X POST -H 'Content-Type: application/json-rpc' -d "$bkpstr" "$ZAF_ZBXAPI_URL" | zaf_zbxapi_getxml
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user