2016-03-23 14:37:51 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
2016-04-14 09:57:59 +02:00
|
|
|
if [ -z "$secondstage" ]; then
|
2016-03-31 15:56:23 +02:00
|
|
|
ZAF_CFG_FILE="/etc/zaf.conf"
|
2016-04-14 09:57:59 +02:00
|
|
|
if [ -f $ZAF_CFG_FILE ]; then
|
|
|
|
. $ZAF_CFG_FILE
|
|
|
|
else
|
|
|
|
echo "Missing config file $ZAF_CFG_FILE! Exiting."
|
|
|
|
exit 2
|
|
|
|
fi
|
2016-03-23 14:37:51 +01:00
|
|
|
|
2016-04-14 09:57:59 +02:00
|
|
|
# Read options as config for ZAF
|
|
|
|
for pair in "$@"; do
|
2016-12-07 14:25:34 +01:00
|
|
|
if echo $pair | grep -qE '^ZAF\_(.*)='; then
|
|
|
|
option=$(echo $pair|cut -d '=' -f 1)
|
|
|
|
value=$(echo $pair|cut -d '=' -f 2-)
|
|
|
|
eval "${option}='$value'"
|
2016-04-14 09:57:59 +02:00
|
|
|
export secondstage=1
|
2016-12-07 14:25:34 +01:00
|
|
|
else
|
2016-04-14 09:57:59 +02:00
|
|
|
params="$params $pair"
|
2016-12-07 14:25:34 +01:00
|
|
|
fi
|
2016-04-14 09:57:59 +02:00
|
|
|
done
|
|
|
|
export $(set |grep ^ZAF_ | cut -d '=' -f 1)
|
|
|
|
# If some variables in cmd were stripped, rerun only with right arguments and exported variables
|
|
|
|
[ -n "$secondstage" ] && exec $0 $params
|
|
|
|
fi
|
2016-04-07 13:14:53 +02:00
|
|
|
|
2017-01-30 10:32:29 +01:00
|
|
|
export ZAF_BIN=$(realpath $0)
|
|
|
|
|
2016-11-30 16:40:26 +01:00
|
|
|
if [ -n "$ZAF_PROXY" ]; then
|
|
|
|
export ALL_PROXY="$ZAF_PROXY"
|
2016-12-05 12:03:13 +01:00
|
|
|
export http_proxy="$ZAF_PROXY"
|
|
|
|
export https_proxy="$ZAF_PROXY"
|
2016-11-30 16:40:26 +01:00
|
|
|
fi
|
|
|
|
|
2016-04-01 15:51:45 +02:00
|
|
|
if [ -f ./lib/zaf.lib.sh ]; then
|
|
|
|
. ./lib/zaf.lib.sh
|
2016-04-19 15:48:12 +02:00
|
|
|
. ./lib/plugin.lib.sh
|
2016-04-01 15:51:45 +02:00
|
|
|
. ./lib/os.lib.sh
|
|
|
|
. ./lib/ctrl.lib.sh
|
2016-04-12 15:28:29 +02:00
|
|
|
. ./lib/cache.lib.sh
|
|
|
|
. ./lib/zbxapi.lib.sh
|
2016-04-01 15:51:45 +02:00
|
|
|
[ -f ./lib/zaf.${ZAF_OS}.sh ] && . ./lib/zaf.${ZAF_OS}.sh
|
|
|
|
else
|
2016-03-23 14:37:51 +01:00
|
|
|
. ${ZAF_LIB_DIR}/zaf.lib.sh
|
2016-04-19 17:38:02 +02:00
|
|
|
. ${ZAF_LIB_DIR}/plugin.lib.sh
|
2016-03-30 16:09:02 +02:00
|
|
|
. ${ZAF_LIB_DIR}/os.lib.sh
|
|
|
|
. ${ZAF_LIB_DIR}/ctrl.lib.sh
|
2016-04-12 15:28:29 +02:00
|
|
|
. ${ZAF_LIB_DIR}/cache.lib.sh
|
|
|
|
. ${ZAF_LIB_DIR}/zbxapi.lib.sh
|
2016-03-31 15:56:23 +02:00
|
|
|
[ -f ${ZAF_LIB_DIR}/zaf.${ZAF_OS}.sh ] && . ${ZAF_LIB_DIR}/zaf.${ZAF_OS}.sh
|
2016-04-01 15:51:45 +02:00
|
|
|
fi
|
2016-03-23 14:37:51 +01:00
|
|
|
|
2016-04-24 04:51:35 +02:00
|
|
|
zaf_debug_init stderr
|
|
|
|
zaf_tmp_init
|
|
|
|
zaf_cache_init
|
2016-04-12 19:31:06 +02:00
|
|
|
|
2016-03-23 14:37:51 +01:00
|
|
|
case $1 in
|
2016-03-23 17:25:18 +01:00
|
|
|
|
2016-04-12 18:38:19 +02:00
|
|
|
cache-clean)
|
|
|
|
zaf_cache_clean
|
|
|
|
;;
|
2016-04-20 09:39:24 +02:00
|
|
|
cache-list)
|
|
|
|
zaf_cache_list
|
|
|
|
;;
|
2016-12-01 16:57:26 +01:00
|
|
|
cache-test1)
|
|
|
|
for i in test1 test2 test3; do
|
|
|
|
echo "To cache:"
|
|
|
|
echo "$i" | zaf_tocache_stdin "test" 10
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
cache-test2)
|
|
|
|
for i in test1 test2 test3; do
|
|
|
|
echo "From cache:"
|
|
|
|
zaf_fromcache "test"
|
|
|
|
done
|
|
|
|
;;
|
2016-04-12 18:38:19 +02:00
|
|
|
|
2016-04-19 11:31:23 +02:00
|
|
|
version)
|
|
|
|
echo "$ZAF_VERSION<git $ZAF_GITBRANCH>"
|
|
|
|
[ $ZAF_DEBUG -gt 1 ] && set |grep -E ^ZAF_
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
###### Agent related commands
|
2016-04-12 18:38:19 +02:00
|
|
|
userparms)
|
|
|
|
for plugin in $(zaf_list_plugins); do
|
|
|
|
plugindir=$ZAF_PLUGINS_DIR/$plugin
|
|
|
|
control=$plugindir/control.zaf
|
2016-06-17 13:16:07 +02:00
|
|
|
zaf_ctrl_generate_items_cfg "${control}" "${plugin}" "noscripts" \
|
2016-12-07 14:25:34 +01:00
|
|
|
| zaf_far '{PLUGINDIR}' "${plugindir}"
|
2016-04-12 18:38:19 +02:00
|
|
|
done
|
|
|
|
;;
|
|
|
|
agent-config)
|
2016-12-05 11:30:10 +01:00
|
|
|
[ -n "$2" ] && force=yes
|
2016-12-02 13:12:13 +01:00
|
|
|
for p in $(zaf_list_plugins); do
|
2016-12-05 11:30:10 +01:00
|
|
|
if [ -f "$ZAF_PLUGINS_DIR/$p/postinst.need" ]; then
|
2016-12-02 13:12:13 +01:00
|
|
|
zaf_wrn "Calling postinstalation of plugin $p"
|
2016-12-05 11:30:10 +01:00
|
|
|
zaf_postinstall_plugin $p && rm -f "$ZAF_PLUGINS_DIR/$p/postinst.need"
|
|
|
|
force=yes
|
2016-12-02 13:12:13 +01:00
|
|
|
fi
|
|
|
|
done
|
2016-04-19 11:09:22 +02:00
|
|
|
zaf_wrn "Generating config files in $ZAF_AGENT_CONFIGD ..."
|
2016-04-12 18:38:19 +02:00
|
|
|
for plugin in $(zaf_list_plugins); do
|
|
|
|
plugindir=$ZAF_PLUGINS_DIR/$plugin
|
|
|
|
control=$plugindir/control.zaf
|
2016-12-07 14:25:34 +01:00
|
|
|
if ! [ -f "${ZAF_AGENT_CONFIGD}/zaf_${plugin}.conf" ] || [ "$control" -nt "${ZAF_AGENT_CONFIGD}/zaf_${plugin}.conf" ] || [ -n "$force" ]; then
|
2016-12-02 13:12:13 +01:00
|
|
|
zaf_dbg "Generating ${ZAF_AGENT_CONFIGD}/zaf_${plugin}.conf"
|
|
|
|
zaf_ctrl_generate_items_cfg "${control}" "${plugin}" \
|
2016-12-07 14:25:34 +01:00
|
|
|
| zaf_far '{PLUGINDIR}' "${plugindir}" >${ZAF_AGENT_CONFIGD}/zaf_${plugin}.conf
|
2016-12-02 13:12:13 +01:00
|
|
|
fi
|
2016-04-12 18:38:19 +02:00
|
|
|
done
|
|
|
|
;;
|
2016-12-02 09:44:48 +01:00
|
|
|
server-config)
|
|
|
|
zaf_wrn "Not implemented yet"
|
|
|
|
;;
|
2016-04-12 18:38:19 +02:00
|
|
|
|
2016-04-19 11:31:23 +02:00
|
|
|
###### Plugins related commands
|
2016-03-23 14:37:51 +01:00
|
|
|
update)
|
2016-04-12 10:36:17 +02:00
|
|
|
zaf_wrn "Updating repository ${ZAF_REPO_GITURL}..."
|
2016-03-23 14:37:51 +01:00
|
|
|
zaf_update_repo
|
|
|
|
;;
|
2016-04-12 10:36:17 +02:00
|
|
|
upgrade)
|
2016-04-12 15:28:29 +02:00
|
|
|
ZAF_DEBUG=$ZAF_DEBUG $0 reinstall $(zaf_list_plugins)
|
2016-04-12 10:36:17 +02:00
|
|
|
;;
|
2016-03-24 15:46:42 +01:00
|
|
|
show)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift;
|
|
|
|
if [ -z "$1" ]; then
|
2016-04-01 12:20:23 +02:00
|
|
|
zaf_list_plugins | while read plugin; do
|
|
|
|
zaf_plugin_info $ZAF_PLUGINS_DIR/$plugin/control.zaf
|
|
|
|
done
|
2016-04-12 10:36:17 +02:00
|
|
|
else
|
2016-04-21 15:29:48 +02:00
|
|
|
if echo $1 | grep -vq "\."; then
|
|
|
|
if zaf_list_plugins | grep -q "^$1"; then
|
|
|
|
zaf_is_plugin $1 && zaf_plugin_info $ZAF_PLUGINS_DIR/$1/control.zaf || zaf_err "Plugin $1 not installed."
|
2016-04-01 15:51:45 +02:00
|
|
|
else
|
2016-04-21 15:29:48 +02:00
|
|
|
if echo $1 |grep -q ^http; then
|
|
|
|
zaf_prepare_plugin "$1" "$ZAF_TMP_DIR/plugin"
|
|
|
|
zaf_plugin_info "$ZAF_TMP_DIR/plugin/control.zaf"
|
|
|
|
else
|
|
|
|
zaf_err "Plugin $1 not installed."
|
|
|
|
fi
|
2016-04-01 15:51:45 +02:00
|
|
|
fi
|
2016-04-21 15:29:48 +02:00
|
|
|
else
|
|
|
|
zaf_item_info "$1"
|
2016-04-01 12:20:23 +02:00
|
|
|
fi
|
2016-03-24 15:46:42 +01:00
|
|
|
fi
|
|
|
|
;;
|
2016-04-01 15:51:45 +02:00
|
|
|
plugins)
|
2016-03-24 15:46:42 +01:00
|
|
|
zaf_list_plugins
|
2016-03-23 14:37:51 +01:00
|
|
|
;;
|
2016-04-01 15:51:45 +02:00
|
|
|
items)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
|
|
|
if [ -z "$1" ]; then
|
2016-03-24 15:46:42 +01:00
|
|
|
zaf_list_items
|
|
|
|
else
|
2016-04-12 10:36:17 +02:00
|
|
|
zaf_list_plugin_items "$1"
|
2016-03-24 15:46:42 +01:00
|
|
|
fi
|
|
|
|
;;
|
2016-04-01 15:51:45 +02:00
|
|
|
test)
|
2016-04-13 16:04:00 +02:00
|
|
|
[ "$USER" != "zabbix" ] && zaf_wrn "You are not zabbix user. Test will be run with your privileges and sudo access!"
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
|
|
|
if echo $1|grep -q '\.'; then
|
|
|
|
zaf_test_item "$1"
|
2016-04-04 14:49:38 +02:00
|
|
|
exit
|
|
|
|
fi
|
2016-04-12 10:36:17 +02:00
|
|
|
if [ -n "$1" ]; then
|
2016-04-01 15:51:45 +02:00
|
|
|
plugins="$@"
|
|
|
|
else
|
|
|
|
plugins="$(zaf_list_plugins)"
|
|
|
|
fi
|
|
|
|
for p in $plugins; do
|
2016-04-12 10:36:17 +02:00
|
|
|
! zaf_is_plugin $p && zaf_err "Unknown plugin $p"
|
2016-04-13 16:04:00 +02:00
|
|
|
for i in $(zaf_list_plugin_items $p test); do
|
2016-04-21 15:29:48 +02:00
|
|
|
zaf_test_item $i
|
2016-04-13 16:04:00 +02:00
|
|
|
echo
|
2016-04-01 15:51:45 +02:00
|
|
|
done
|
|
|
|
done
|
2016-03-23 17:25:18 +01:00
|
|
|
;;
|
2017-01-30 10:32:29 +01:00
|
|
|
itemsh)
|
2016-12-11 16:20:06 +01:00
|
|
|
shift
|
|
|
|
if zaf_is_item "$1"; then
|
2017-01-30 10:32:29 +01:00
|
|
|
plugin=$(zaf_get_plugin_name "$1")
|
|
|
|
item=$(zaf_get_item_name "$1")
|
|
|
|
params=$(zaf_get_item_params "$1")
|
|
|
|
params2=$(zaf_paramstosh "[$params]")
|
|
|
|
script=$(zaf_ctrl_generate_items_cfg "${ZAF_PLUGINS_DIR}/${plugin}/control.zaf" "${plugin}" "" "sh -i #"| grep "UserParameter=$plugin.$item" | cut -d ',' -f 2-)
|
|
|
|
exec sh -c "$script" dummy $params2
|
|
|
|
else
|
|
|
|
zaf_err "No such plugin/item $1"
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
run)
|
|
|
|
shift
|
|
|
|
if zaf_is_item "$1"; then
|
|
|
|
plugin=$(zaf_get_plugin_name "$1")
|
|
|
|
item=$(zaf_get_item_name "$1")
|
|
|
|
params=$(zaf_get_item_params "$1")
|
|
|
|
params2=$(zaf_paramstosh "[$params]")
|
|
|
|
script=$(zaf_ctrl_generate_items_cfg "${ZAF_PLUGINS_DIR}/${plugin}/control.zaf" "${plugin}" | grep "UserParameter=$plugin.$item" | cut -d ',' -f 2-)
|
|
|
|
exec sh -c "$script" dummy $params2
|
2016-12-11 16:20:06 +01:00
|
|
|
else
|
|
|
|
zaf_err "No such plugin/item $1"
|
|
|
|
fi
|
|
|
|
;;
|
2016-04-12 10:36:17 +02:00
|
|
|
get)
|
|
|
|
shift
|
2017-01-30 10:32:29 +01:00
|
|
|
if zaf_is_item "$1"; then
|
2016-04-12 10:36:17 +02:00
|
|
|
zaf_get_item "$1"
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
if [ -n "$1" ]; then
|
|
|
|
plugins="$@"
|
|
|
|
else
|
|
|
|
plugins="$(zaf_list_plugins)"
|
|
|
|
fi
|
|
|
|
for p in $plugins; do
|
2016-04-13 16:04:00 +02:00
|
|
|
for i in $(zaf_list_plugin_items $p test); do
|
2016-04-12 10:36:17 +02:00
|
|
|
echo $i: $(zaf_get_item $i)
|
2016-04-13 16:04:00 +02:00
|
|
|
echo
|
2016-04-12 10:36:17 +02:00
|
|
|
done
|
|
|
|
done
|
|
|
|
;;
|
2017-01-30 10:32:29 +01:00
|
|
|
send)
|
|
|
|
shift
|
2017-02-14 17:05:16 +01:00
|
|
|
if [ -z "$1" ]; then
|
2017-02-15 15:35:16 +01:00
|
|
|
# No parameters - pipe to zabbix_sender
|
2017-02-14 17:05:16 +01:00
|
|
|
zaf_dbg "Waiting for data on stdin (host item value) per line"
|
2017-01-30 10:32:29 +01:00
|
|
|
zscmd="zabbix_sender -z '$ZAF_ZBXSRV_HOST' -p '$ZAF_ZBXSRV_PORT' -i -"
|
|
|
|
zaf_dbg $zscmd
|
2017-02-15 15:35:16 +01:00
|
|
|
eval $zscmd
|
2017-01-30 10:32:29 +01:00
|
|
|
exit
|
2017-02-14 17:05:16 +01:00
|
|
|
else
|
|
|
|
if [ -n "$2" ]; then
|
2017-02-15 15:35:16 +01:00
|
|
|
# Hostname as parameter - rerun with right hostname set
|
2017-02-14 17:05:16 +01:00
|
|
|
exec $0 send "$2" "$3" ZAF_HOSTNAME="$1"
|
|
|
|
else
|
2017-02-15 15:35:16 +01:00
|
|
|
if echo "$1" | grep -q ':'; then
|
|
|
|
# Hostname:item - rerun with right hostname set
|
|
|
|
exec $0 send "$(echo $1 |cut -d ':' -f 2-)" "$3" ZAF_HOSTNAME="$(echo $1 |cut -d ':' -f 1)"
|
|
|
|
fi
|
2017-02-14 17:05:16 +01:00
|
|
|
if zaf_is_item "$1"; then
|
2017-02-15 15:35:16 +01:00
|
|
|
# Item supported by zaf
|
2017-02-14 17:05:16 +01:00
|
|
|
plugin=$(zaf_get_plugin_name "$1")
|
|
|
|
item=$(zaf_get_item_name "$1")
|
|
|
|
zscmd="zabbix_sender -z '$ZAF_ZBXSRV_HOST' -p '$ZAF_ZBXSRV_PORT' -s '$(zaf_hostname)' -k '$plugin.$item' -o '$(zaf_run_item $1)'"
|
|
|
|
zaf_dbg $zscmd
|
2017-02-15 15:35:16 +01:00
|
|
|
eval $zscmd
|
2017-02-14 17:05:16 +01:00
|
|
|
exit
|
|
|
|
else
|
|
|
|
if echo $1 | grep -q '='; then
|
|
|
|
item=$(echo $1 | cut -d '=' -f 1)
|
|
|
|
value=$(echo $1 | cut -d '=' -f 2-)
|
|
|
|
else
|
|
|
|
item=$1
|
|
|
|
zaf_dbg "Waiting for value of $(zaf_hostname):$1 on stdin"
|
|
|
|
value=$(cat)
|
|
|
|
fi
|
|
|
|
zscmd="zabbix_sender -z '$ZAF_ZBXSRV_HOST' -p '$ZAF_ZBXSRV_PORT' -s '$(zaf_hostname)' -k '$item' -o '$value'"
|
|
|
|
zaf_dbg $zscmd
|
2017-02-15 15:35:16 +01:00
|
|
|
eval $zscmd
|
2017-02-14 17:05:16 +01:00
|
|
|
exit
|
|
|
|
fi
|
|
|
|
fi
|
2017-01-30 10:32:29 +01:00
|
|
|
fi
|
|
|
|
;;
|
|
|
|
register)
|
|
|
|
shift
|
|
|
|
if [ -z "$1" ]; then
|
|
|
|
hostname=$(zaf_hostname)
|
|
|
|
else
|
|
|
|
hostname="$1"
|
|
|
|
if [ -z "$2" ]; then
|
|
|
|
metadata="ZAF"
|
|
|
|
else
|
|
|
|
metadata="$2"
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
zaf_register "$hostname" "$metadata"
|
|
|
|
exit;
|
|
|
|
;;
|
2016-04-12 19:31:06 +02:00
|
|
|
precache)
|
|
|
|
shift
|
|
|
|
for i in $*; do
|
2016-04-13 16:04:00 +02:00
|
|
|
if zaf_is_plugin $i; then
|
|
|
|
for j in $(zaf_list_plugin_items $i precache); do
|
|
|
|
item=$(echo $j | cut -d '[' -f 1)
|
|
|
|
params=$(echo $j | cut -d '[' -f 2 | cut -d ']' -f 1 | tr ',' ' ')
|
|
|
|
zaf_precache_item $params >/dev/null
|
|
|
|
done
|
|
|
|
else
|
|
|
|
item=$(echo $i | cut -d '[' -f 1)
|
|
|
|
params=$(echo $i | cut -d '[' -f 2 | cut -d ']' -f 1 | tr ',' ' ')
|
|
|
|
zaf_precache_item $params >/dev/null
|
|
|
|
fi
|
2016-04-12 19:31:06 +02:00
|
|
|
done
|
|
|
|
;;
|
2016-03-23 14:37:51 +01:00
|
|
|
install)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
2016-04-04 14:00:44 +02:00
|
|
|
[ -z "$1" ] && echo "$0 install plugin [plugin]..."
|
2016-03-30 16:09:02 +02:00
|
|
|
for p in $@; do
|
2016-04-13 16:04:00 +02:00
|
|
|
if zaf_is_plugin "$(basename $p)"; then
|
|
|
|
zaf_wrn "Plugin $(basename $p) already installed. Skipping installation."
|
2016-04-01 12:20:23 +02:00
|
|
|
continue
|
|
|
|
fi
|
2016-03-30 16:09:02 +02:00
|
|
|
zaf_install_plugin "$p"
|
2016-04-01 12:20:23 +02:00
|
|
|
installed=1
|
2016-03-30 16:09:02 +02:00
|
|
|
done
|
2016-04-01 12:20:23 +02:00
|
|
|
[ -n "$installed" ] && zaf_is_root && zaf_restart_agent
|
|
|
|
;;
|
|
|
|
reinstall)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
2016-04-04 14:00:44 +02:00
|
|
|
[ -z "$1" ] && echo "$0 reinstall plugin [plugin]..."
|
2016-04-01 12:20:23 +02:00
|
|
|
for p in $@; do
|
|
|
|
if zaf_is_plugin "$p"; then
|
2016-12-12 11:18:29 +01:00
|
|
|
params=$(zaf_get_plugin_parameters $p)
|
2016-12-12 11:07:11 +01:00
|
|
|
for param in $params; do
|
2016-12-12 09:56:12 +01:00
|
|
|
eval export ZAF_${p}_${param}=$(zaf_get_plugin_parameter "${ZAF_PLUGINS_DIR}/${p}" $param)
|
2016-12-12 11:07:11 +01:00
|
|
|
zaf_dbg "Saving ZAF_${p}_${param}"
|
2016-12-12 09:56:12 +01:00
|
|
|
done
|
2016-12-12 11:18:29 +01:00
|
|
|
zaf_remove_plugin "$p"
|
2016-04-01 12:20:23 +02:00
|
|
|
reinstalled=1
|
|
|
|
fi
|
|
|
|
zaf_install_plugin "$p"
|
|
|
|
reinstalled=1
|
|
|
|
done
|
|
|
|
[ -n "$reinstalled" ] && zaf_is_root && zaf_restart_agent
|
2016-03-23 14:37:51 +01:00
|
|
|
;;
|
2016-12-11 13:06:05 +01:00
|
|
|
remove|uninstall)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
2016-04-04 14:00:44 +02:00
|
|
|
[ -z "$1" ] && echo "$0 remove plugin [plugin]..."
|
2016-04-01 12:20:23 +02:00
|
|
|
for p in $@; do
|
|
|
|
if zaf_is_plugin "$p"; then
|
|
|
|
zaf_remove_plugin "$p"
|
|
|
|
removed=1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
[ -n "$removed" ] && zaf_is_root && zaf_restart_agent
|
2016-03-23 17:25:18 +01:00
|
|
|
;;
|
2016-12-11 13:06:05 +01:00
|
|
|
plugin-set)
|
|
|
|
plugin="$2"
|
|
|
|
param="$3"
|
|
|
|
value="$4"
|
|
|
|
if [ -z "$plugin" ] || [ -z "$param" ]; then
|
|
|
|
zaf_err "$0 plugin-set plugin parameter value"
|
|
|
|
else
|
|
|
|
if zaf_is_plugin "$plugin"; then
|
|
|
|
plugindir="${ZAF_PLUGINS_DIR}/${plugin}"
|
|
|
|
zaf_set_plugin_parameter "$plugindir" "$param" "$value"
|
|
|
|
else
|
|
|
|
zaf_err "Plugin $plugin is not installed."
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
;;
|
2016-03-23 17:25:18 +01:00
|
|
|
|
2016-04-19 11:31:23 +02:00
|
|
|
###### Zaf related commands
|
2016-03-24 15:46:42 +01:00
|
|
|
self-upgrade)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
|
|
|
[ -z "$1" ] && auto=auto
|
2016-04-07 13:14:53 +02:00
|
|
|
zaf_os_specific zaf_check_deps zaf && zaf_err "Zaf is installed as system package. Cannot self-upgrade."
|
2016-11-21 18:20:03 +01:00
|
|
|
if ! zaf_which curl >/dev/null;
|
2016-04-04 15:10:38 +02:00
|
|
|
then
|
|
|
|
zaf_err "Curl not found. Cannot continue. Please install it."
|
2016-03-30 16:09:02 +02:00
|
|
|
fi
|
2016-04-14 10:04:45 +02:00
|
|
|
zaf_fetch_url $ZAF_RAW_URL/$ZAF_GITBRANCH/install.sh | exec sh -s $auto "$@"
|
2016-04-04 15:10:38 +02:00
|
|
|
exit
|
2016-03-24 15:46:42 +01:00
|
|
|
;;
|
2016-03-24 20:37:03 +01:00
|
|
|
self-remove)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
2016-04-07 13:14:53 +02:00
|
|
|
zaf_os_specific zaf_check_deps zaf && zaf_err "Zaf is installed as system package. Cannot self-remove."
|
2016-04-01 15:51:45 +02:00
|
|
|
. /etc/zaf.conf
|
2016-04-12 10:36:17 +02:00
|
|
|
if [ "$1" = "force" ]; then
|
2016-12-07 14:25:34 +01:00
|
|
|
rm -rf /etc/zaf.conf ${ZAF_PLUGINS_DIR} ${ZAF_REPO_DIR} ${ZAF_LIB_DIR} \
|
|
|
|
${ZAF_BIN_DIR}/zaf ${ZAF_AGENT_CONFIGD}/zaf_*
|
2016-03-24 20:37:03 +01:00
|
|
|
else
|
2016-12-07 14:25:34 +01:00
|
|
|
echo "This will remove zaf from this computer and erase all configuration."
|
|
|
|
echo "This command will be executed:"
|
|
|
|
echo "rm -rf /etc/zaf.conf ${ZAF_PLUGINS_DIR} ${ZAF_REPO_DIR} ${ZAF_LIB_DIR} \
|
2016-04-01 15:51:45 +02:00
|
|
|
${ZAF_BIN_DIR}/zaf ${ZAF_AGENT_CONFIGD}/zaf_*"
|
2016-12-07 14:25:34 +01:00
|
|
|
echo
|
|
|
|
echo "To continue, please do $0 self-remove force"
|
2016-03-24 20:37:03 +01:00
|
|
|
fi
|
2017-01-30 10:32:29 +01:00
|
|
|
;;
|
|
|
|
|
2016-04-19 11:31:23 +02:00
|
|
|
###### API related commands
|
2016-04-12 15:28:29 +02:00
|
|
|
api)
|
|
|
|
zaf_zbxapi_login
|
|
|
|
case $2 in
|
2016-04-18 10:24:55 +02:00
|
|
|
get-*-id)
|
2016-12-07 14:25:34 +01:00
|
|
|
obj=$(echo $2|cut -d '-' -f 2)
|
2016-04-18 09:20:57 +02:00
|
|
|
[ -z "$3" ] && zaf_err "$0 $1 $2 <$obj>"
|
|
|
|
eval zaf_zbxapi_get${obj}id "$3"
|
2016-04-12 15:28:29 +02:00
|
|
|
;;
|
2016-04-18 10:24:55 +02:00
|
|
|
get-byid-*|get-id-*)
|
|
|
|
obj=$(echo $2|cut -d '-' -f 3)
|
2016-04-18 09:20:57 +02:00
|
|
|
[ -z "$3" ] && zaf_err "$0 $1 $2 <id>"
|
2016-04-18 10:24:55 +02:00
|
|
|
eval zaf_zbxapi_get${obj} "$3" "$4"
|
2016-04-18 09:20:57 +02:00
|
|
|
;;
|
2016-04-18 10:24:55 +02:00
|
|
|
get-host-ids)
|
2016-04-18 09:20:57 +02:00
|
|
|
if [ -n "$3" ]; then
|
|
|
|
gid=$(zaf_zbxapi_gethostgroupid "$3") || exit 1
|
|
|
|
zaf_dbg "Selecting all hosts in group $3($gid)"
|
|
|
|
zaf_zbxapi_gethostsingroup $gid
|
|
|
|
else
|
|
|
|
zaf_dbg "Selecting all hosts in system"
|
|
|
|
zaf_zbxapi_gethostids
|
|
|
|
fi
|
|
|
|
;;
|
2016-04-18 10:24:55 +02:00
|
|
|
get-inventory)
|
2016-04-19 11:31:23 +02:00
|
|
|
[ -z "$3" ] && zaf_err "$0 $1 field [host]. If host unspecified, use hostname"
|
|
|
|
if [ -z "$4" ]; then
|
|
|
|
host=$(hostname)
|
|
|
|
else
|
|
|
|
host="$4"
|
|
|
|
fi
|
|
|
|
zaf_zbxapi_gethostinventory $host $3
|
2016-04-18 10:24:55 +02:00
|
|
|
;;
|
|
|
|
get-template-ids)
|
2016-04-18 09:20:57 +02:00
|
|
|
if [ -n "$3" ]; then
|
|
|
|
gid=$(zaf_zbxapi_gethostgroupid "$3") || exit 1
|
|
|
|
zaf_dbg "Selecting all templates in group $3($gid)"
|
|
|
|
zaf_zbxapi_gettemplatesingroup $gid
|
|
|
|
else
|
|
|
|
zaf_dbg "Selecting all templates in system"
|
|
|
|
zaf_zbxapi_gettemplateids
|
|
|
|
fi
|
|
|
|
;;
|
2016-04-18 10:24:55 +02:00
|
|
|
get-map-ids)
|
2016-04-18 09:20:57 +02:00
|
|
|
zaf_zbxapi_getmapid
|
2016-04-12 15:28:29 +02:00
|
|
|
;;
|
2016-04-14 14:46:29 +02:00
|
|
|
export-hosts)
|
2016-04-12 18:38:19 +02:00
|
|
|
shift; shift
|
2016-04-14 14:46:29 +02:00
|
|
|
[ -z "$1" ] && zaf_err "$0 api export-hosts dir [hostgroup]"
|
|
|
|
dir="$1"
|
2016-04-12 18:38:19 +02:00
|
|
|
shift
|
2016-04-14 14:46:29 +02:00
|
|
|
if [ -n "$1" ]; then
|
|
|
|
gid=$(zaf_zbxapi_gethostgroupid "$1") || exit 1
|
|
|
|
shift
|
|
|
|
hosts=$(zaf_zbxapi_gethostsingroup $gid)
|
|
|
|
else
|
2016-04-18 12:58:49 +02:00
|
|
|
hosts=$(zaf_zbxapi_gethostids)
|
2016-04-14 14:46:29 +02:00
|
|
|
fi
|
2016-04-12 15:28:29 +02:00
|
|
|
zaf_wrn "Will backup this hosts: $hosts"
|
2016-04-12 18:38:19 +02:00
|
|
|
zaf_wrn "Output dir: $dir"
|
2016-04-12 15:28:29 +02:00
|
|
|
for h in $hosts; do
|
2016-04-14 14:31:01 +02:00
|
|
|
if zaf_bglimit 5; then
|
|
|
|
(
|
2016-04-18 12:58:49 +02:00
|
|
|
hn=$(zaf_zbxapi_gethost $h name)
|
2016-04-14 14:31:01 +02:00
|
|
|
zaf_wrn "Exporting host $hn($h)..."
|
|
|
|
zaf_zbxapi_export_host $h >"$dir/$hn.xml"
|
|
|
|
) &
|
|
|
|
else
|
2016-04-18 12:58:49 +02:00
|
|
|
hn=$(zaf_zbxapi_gethost $h name)
|
2016-04-14 14:31:01 +02:00
|
|
|
zaf_wrn "Exporting host $hn($h)..."
|
|
|
|
zaf_zbxapi_export_host $h >"$dir/$hn.xml"
|
|
|
|
fi
|
2016-04-12 15:28:29 +02:00
|
|
|
done
|
2016-04-12 18:38:19 +02:00
|
|
|
wait
|
2016-04-12 15:28:29 +02:00
|
|
|
;;
|
2016-04-14 14:31:01 +02:00
|
|
|
export-host)
|
2016-04-12 18:38:19 +02:00
|
|
|
shift; shift
|
2016-04-14 14:31:01 +02:00
|
|
|
hostid=$(zaf_zbxapi_gethostid "$1") || exit 1
|
2016-04-12 15:28:29 +02:00
|
|
|
zaf_wrn "Exporting host $3($hostid)..."
|
2016-04-14 14:31:01 +02:00
|
|
|
zaf_zbxapi_export_host $hostid
|
|
|
|
;;
|
|
|
|
export-template)
|
|
|
|
shift; shift
|
|
|
|
templateid=$(zaf_zbxapi_gettemplateid "$1") || exit 1
|
|
|
|
zaf_wrn "Exporting template $3($hostid)..."
|
|
|
|
zaf_zbxapi_export_template $templateid
|
|
|
|
;;
|
|
|
|
export-templates)
|
|
|
|
shift; shift
|
2016-04-14 14:46:29 +02:00
|
|
|
[ -z "$1" ] && zaf_err "$0 api export-templates dir"
|
|
|
|
dir="$1"
|
2016-04-18 12:58:49 +02:00
|
|
|
templates=$(zaf_zbxapi_gettemplateids)
|
2016-04-14 14:31:01 +02:00
|
|
|
zaf_wrn "Will backup this templates: $templates"
|
|
|
|
zaf_wrn "Output dir: $dir"
|
|
|
|
for t in $templates; do
|
|
|
|
if zaf_bglimit 5; then
|
|
|
|
(
|
2016-04-18 12:58:49 +02:00
|
|
|
tn=$(zaf_zbxapi_gettemplate $t name)
|
2016-04-14 14:31:01 +02:00
|
|
|
zaf_wrn "Exporting template $tn($t)..."
|
|
|
|
zaf_zbxapi_export_template $t >"$dir/$tn.xml"
|
|
|
|
) &
|
|
|
|
else
|
2016-04-18 12:58:49 +02:00
|
|
|
tn=$(zaf_zbxapi_gettemplate $t name)
|
2016-04-14 14:31:01 +02:00
|
|
|
zaf_wrn "Exporting template $tn($t)..."
|
|
|
|
zaf_zbxapi_export_template $t >"$dir/$tn.xml"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
wait
|
|
|
|
;;
|
|
|
|
import-template)
|
|
|
|
shift; shift
|
|
|
|
if zaf_is_plugin $1; then
|
|
|
|
if [ -f "$ZAF_PLUGINS_DIR/$1/template.xml" ]; then
|
|
|
|
template="$ZAF_PLUGINS_DIR/$1/template.xml"
|
|
|
|
zaf_wrn "Importing template $template"
|
2016-04-19 20:11:09 +02:00
|
|
|
zaf_zbxapi_import_config $template || zaf_err "Error importing template"
|
2016-04-14 14:31:01 +02:00
|
|
|
else
|
|
|
|
url="$(zaf_plugin_option $1 Template)"
|
|
|
|
if [ -n "$url" ]; then
|
2016-04-19 20:11:09 +02:00
|
|
|
zaf_fetch_url $url | zaf_zbxapi_import_config || zaf_err "Error importing template"
|
2016-04-14 14:31:01 +02:00
|
|
|
else
|
|
|
|
url="$(zaf_plugin_option $1 Url)"
|
2016-04-19 20:11:09 +02:00
|
|
|
zaf_fetch_url $url/template.xml | zaf_zbxapi_import_config || zaf_err "Error importing template"
|
2016-04-14 14:31:01 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
if [ -f $1 ]; then
|
|
|
|
zaf_wrn "Importing template $1"
|
2016-04-19 20:11:09 +02:00
|
|
|
zaf_zbxapi_import_config $1 || zaf_err "Error importing template"
|
2016-04-14 14:31:01 +02:00
|
|
|
else
|
|
|
|
zaf_err "Unknown plugin $1!"
|
|
|
|
fi
|
|
|
|
fi
|
2016-04-12 15:28:29 +02:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "$0 api command [parameters]"
|
2016-04-18 09:20:57 +02:00
|
|
|
for i in host template map; do
|
2016-04-18 10:24:55 +02:00
|
|
|
zaf_hlp "get-${i}-id $i" "Get $i id"
|
|
|
|
zaf_hlp "get-byid-${i} id [property]" "Get $i property from id. Leave empty property for JSON"
|
2016-04-18 09:20:57 +02:00
|
|
|
done
|
2016-04-19 15:48:12 +02:00
|
|
|
zaf_hlp "get-inventory host [fields]" "Get inventory fields [or all fields]"
|
|
|
|
zaf_hlp "get-host-ids [hg]" "Get all hostids or hostids in group hg"
|
|
|
|
zaf_hlp "get-template-ids [hg]" "Get all templateids or templateids in group hg"
|
|
|
|
zaf_hlp "get-map-ids" "Get all mapids"
|
2016-04-18 09:20:57 +02:00
|
|
|
zaf_hlp "export-hosts dir [hg]" "Backup all hosts [in group hg] (get their config from zabbix and save to dir/hostname.xml)"
|
|
|
|
zaf_hlp "export-host host" "Backup host (get config from zabbix to stdout)"
|
|
|
|
zaf_hlp "import-template {plugin|file}" "Import template for plugin or from file"
|
|
|
|
zaf_hlp "export-template name" "Export template to stdout"
|
|
|
|
zaf_hlp "export-templates dir" "Export all template to dir"
|
2016-04-12 15:28:29 +02:00
|
|
|
echo
|
2016-04-19 11:31:23 +02:00
|
|
|
[ -n "$2" ] && zaf_err "Bad API command '$2'!"
|
2016-04-12 15:28:29 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
2016-03-24 15:46:42 +01:00
|
|
|
|
2016-03-23 14:37:51 +01:00
|
|
|
*)
|
2017-01-30 10:32:29 +01:00
|
|
|
if zaf_is_plugin "$1"; then
|
|
|
|
if [ -z "$2" ]; then
|
|
|
|
zaf_list_plugin_commands "$1"
|
|
|
|
else
|
|
|
|
zaf_plugin_run_command "$@"
|
|
|
|
fi
|
|
|
|
exit
|
|
|
|
fi
|
2016-04-04 14:00:44 +02:00
|
|
|
echo "$0 Version ${ZAF_VERSION}. Please use some of this commands:"
|
2016-04-14 10:44:50 +02:00
|
|
|
echo "$0 Cmd [ZAF_OPTION=value] [ZAF_CTRL_Option=value] [ZAF_CTRLI_Item_Option=value] ..."
|
2016-04-18 09:20:57 +02:00
|
|
|
echo "Plugin manipulation commands:"
|
|
|
|
zaf_hlp "$0 update" "To update repo (not plugins, similar to apt-get update)"
|
|
|
|
zaf_hlp "$0 upgrade" "To upgrade installed plugins from repo"
|
|
|
|
zaf_hlp "$0 install plugin" "To install plugin"
|
|
|
|
zaf_hlp "$0 remove plugin" "To remove plugin"
|
|
|
|
echo
|
|
|
|
echo "Plugin info commands:"
|
|
|
|
zaf_hlp "$0 plugins" "To list installed plugins"
|
|
|
|
zaf_hlp "$0 show [plugin]" "To show installed plugins or plugin info"
|
|
|
|
zaf_hlp "$0 items [plugin]" "To list all suported items [for plugin]"
|
|
|
|
echo
|
|
|
|
echo "Plugin diagnostic commands:"
|
|
|
|
zaf_hlp "$0 test [plugin[.item]]" "To test [all] suported items by zabbix_agentd [for plugin]"
|
|
|
|
zaf_hlp "$0 get [plugin[.item]]" "To test [all] suported items by zabbix_get [for plugin]"
|
2017-01-30 10:32:29 +01:00
|
|
|
zaf_hlp "$0 run [plugin[.item]]" "To test [all] suported items by directly runing command [for plugin]"
|
2016-04-18 09:20:57 +02:00
|
|
|
zaf_hlp "$0 precache [plugin[.item]]" "To precache [all] suported items"
|
2016-12-11 16:20:06 +01:00
|
|
|
zaf_hlp "$0 itemsh plugin.item" "To spawn interactive shell in item context (same as UserParameter)."
|
2016-04-18 09:20:57 +02:00
|
|
|
echo
|
|
|
|
echo "Zabbix API commands:"
|
|
|
|
zaf_hlp "$0 api" "To zabbix API functions. See $0 api for more info."
|
|
|
|
echo
|
2017-01-30 10:32:29 +01:00
|
|
|
echo "Zabbix trapper commands:"
|
|
|
|
zaf_hlp "$0 send plugin.item" "To send result of agent param directly to Zabbix server by zabbix_server."
|
2017-02-14 17:05:16 +01:00
|
|
|
zaf_hlp "$0 send item" "To send value for any item from stdin."
|
|
|
|
zaf_hlp "$0 send host:item" "To send value for any host:item from stdin."
|
2017-01-30 10:32:29 +01:00
|
|
|
echo "Zabbix agent registration:"
|
|
|
|
zaf_hlp "$0 register [hostname] [metadata]" "To register hostname on Zabbix server (autoregistration)."
|
|
|
|
echo
|
2016-04-18 09:20:57 +02:00
|
|
|
echo "Agent config info commands:"
|
|
|
|
zaf_hlp "$0 userparms" "See userparms generated from zaf on stdout"
|
2016-12-02 13:12:13 +01:00
|
|
|
zaf_hlp "$0 agent-config [force]" "Reconfigure zabbix userparms in $ZAF_AGENT_CONFIGD"
|
2016-04-18 09:20:57 +02:00
|
|
|
echo
|
|
|
|
echo "Zaf related commands:"
|
|
|
|
zaf_hlp "$0 self-upgrade" "To self-upgrade zaf"
|
|
|
|
zaf_hlp "$0 self-remove" "To self-remove zaf and its config"
|
|
|
|
zaf_hlp "$0 cache-clean" "To remove all entries from cache"
|
2016-04-20 09:39:24 +02:00
|
|
|
zaf_hlp "$0 cache-list" "To show all entries in cache"
|
2016-04-12 10:36:17 +02:00
|
|
|
echo
|
2016-04-19 11:31:23 +02:00
|
|
|
[ -n "$1" ] && zaf_err "Bad command '$1'!"
|
2016-03-23 14:37:51 +01:00
|
|
|
;;
|
2016-03-23 17:25:18 +01:00
|
|
|
|
2016-03-23 14:37:51 +01:00
|
|
|
esac
|
|
|
|
|