2016-03-23 14:37:51 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
2016-03-31 15:56:23 +02:00
|
|
|
ZAF_CFG_FILE="/etc/zaf.conf"
|
|
|
|
if [ -f $ZAF_CFG_FILE ]; then
|
|
|
|
. $ZAF_CFG_FILE
|
2016-03-24 15:46:42 +01:00
|
|
|
else
|
2016-03-31 15:56:23 +02:00
|
|
|
echo "Missing config file $ZAF_CFG_FILE! Exiting."
|
2016-03-24 15:46:42 +01:00
|
|
|
exit 2
|
2016-03-23 14:37:51 +01:00
|
|
|
fi
|
|
|
|
|
2016-04-07 13:14:53 +02:00
|
|
|
# Read options as config for ZAF
|
|
|
|
for pair in "$@"; do
|
|
|
|
echo $pair | grep -q '^ZAF\_' || continue
|
|
|
|
option=$(echo $pair|cut -d '=' -f 1)
|
|
|
|
value=$(echo $pair|cut -d '=' -f 2-)
|
|
|
|
eval "${option}='$value'"
|
|
|
|
done
|
|
|
|
|
2016-03-30 16:09:02 +02:00
|
|
|
[ -z "$ZAF_TMP_BASE" ] && ZAF_TMP_BASE=/tmp/zaf
|
2016-04-01 12:20:23 +02:00
|
|
|
ZAF_TMP_DIR="${ZAF_TMP_BASE}-${USER}"
|
|
|
|
[ -z "$ZAF_DEBUG" ] && ZAF_DEBUG=1
|
2016-04-12 10:36:17 +02:00
|
|
|
export ZAF_DEBUG
|
|
|
|
|
|
|
|
# If debug is on, do not remove tmp dir
|
|
|
|
if [ "$ZAF_DEBUG" -le 3 ]; then
|
|
|
|
trap "rm -rif ${ZAF_TMP_DIR}" EXIT
|
|
|
|
fi
|
|
|
|
|
|
|
|
! [ -d "${ZAF_TMP_DIR}" ] && mkdir "${ZAF_TMP_DIR}"
|
2016-04-12 15:28:29 +02:00
|
|
|
! [ -d "${ZAF_CACHE_DIR}" ] && mkdir "${ZAF_CACHE_DIR}"
|
2016-03-30 16:09:02 +02:00
|
|
|
|
2016-04-01 15:51:45 +02:00
|
|
|
if [ -f ./lib/zaf.lib.sh ]; then
|
|
|
|
. ./lib/zaf.lib.sh
|
|
|
|
. ./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-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-12 10:36:17 +02:00
|
|
|
zaf_shift(){
|
|
|
|
local s
|
|
|
|
|
|
|
|
if echo $1 |grep -q "="; then
|
|
|
|
if echo $2 |grep -q "="; then
|
|
|
|
if echo $3 |grep -q "="; then
|
|
|
|
s=3
|
|
|
|
else
|
|
|
|
s=2
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
s=1
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
s=0
|
|
|
|
fi
|
|
|
|
echo $s
|
|
|
|
}
|
|
|
|
|
2016-03-23 14:37:51 +01:00
|
|
|
case $1 in
|
2016-03-23 17:25:18 +01:00
|
|
|
|
|
|
|
check-agent-config)
|
|
|
|
zaf_check_agent_config
|
|
|
|
;;
|
|
|
|
|
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;
|
|
|
|
shift $(zaf_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
|
|
|
|
if zaf_list_plugins | grep -q "^$1"; then
|
|
|
|
[ -f $ZAF_PLUGINS_DIR/$1/control.zaf ] && zaf_plugin_info $ZAF_PLUGINS_DIR/$1/control.zaf || zaf_err "Plugin $1 not installed."
|
2016-04-01 12:20:23 +02:00
|
|
|
else
|
2016-04-12 10:36:17 +02:00
|
|
|
if echo $1 |grep -q ^http; then
|
|
|
|
zaf_prepare_plugin "$1" "$ZAF_TMP_DIR/plugin"
|
2016-04-01 15:51:45 +02:00
|
|
|
zaf_plugin_info "$ZAF_TMP_DIR/plugin/control.zaf"
|
|
|
|
else
|
2016-04-12 10:36:17 +02:00
|
|
|
zaf_err "Plugin $1 not installed."
|
2016-04-01 15:51:45 +02:00
|
|
|
fi
|
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
|
|
|
|
shift $(zaf_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-12 10:36:17 +02:00
|
|
|
shift
|
|
|
|
shift $(zaf_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-01 15:51:45 +02:00
|
|
|
for i in $(zaf_list_plugin_items $p); do
|
|
|
|
echo $i: $(zaf_test_item $i)
|
|
|
|
done
|
|
|
|
done
|
2016-03-23 17:25:18 +01:00
|
|
|
;;
|
2016-04-12 10:36:17 +02:00
|
|
|
get)
|
|
|
|
shift
|
|
|
|
shift $(zaf_shift "$@")
|
|
|
|
if echo $1|grep -q '\.'; then
|
|
|
|
zaf_get_item "$1"
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
if [ -n "$1" ]; then
|
|
|
|
plugins="$@"
|
|
|
|
else
|
|
|
|
plugins="$(zaf_list_plugins)"
|
|
|
|
fi
|
|
|
|
for p in $plugins; do
|
|
|
|
for i in $(zaf_list_plugin_items $p); do
|
|
|
|
echo $i: $(zaf_get_item $i)
|
|
|
|
done
|
|
|
|
done
|
|
|
|
;;
|
2016-03-23 14:37:51 +01:00
|
|
|
install)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
|
|
|
shift $(zaf_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-01 12:20:23 +02:00
|
|
|
if zaf_is_plugin "$p"; then
|
|
|
|
zaf_wrn "Plugin $p already installed. Skipping installation."
|
|
|
|
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
|
|
|
|
shift $(zaf_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-04-01 15:51:45 +02:00
|
|
|
zaf_remove_plugin "$(basename $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-03-23 17:25:18 +01:00
|
|
|
remove)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
|
|
|
shift $(zaf_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-03-24 15:46:42 +01:00
|
|
|
self-upgrade)
|
2016-04-12 10:36:17 +02:00
|
|
|
shift
|
|
|
|
shift $(zaf_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-03-30 16:09:02 +02:00
|
|
|
rm -rf /tmp/zaf-installer && mkdir /tmp/zaf-installer
|
2016-04-04 15:10:38 +02:00
|
|
|
if ! which curl >/dev/null;
|
|
|
|
then
|
|
|
|
zaf_err "Curl not found. Cannot continue. Please install it."
|
2016-03-30 16:09:02 +02:00
|
|
|
fi
|
2016-04-12 10:36:17 +02:00
|
|
|
zaf_fetch_url $ZAF_RAW_URL/$ZAF_VERSION/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
|
|
|
|
shift $(zaf_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-04-01 15:51:45 +02: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
|
|
|
|
echo "This will remove zaf from this computer and erase all configuration."
|
2016-04-01 15:51:45 +02:00
|
|
|
echo "This command will be executed:"
|
|
|
|
echo "rm -rf /etc/zaf.conf ${ZAF_PLUGINS_DIR} ${ZAF_REPO_DIR} ${ZAF_LIB_DIR} \
|
|
|
|
${ZAF_BIN_DIR}/zaf ${ZAF_AGENT_CONFIGD}/zaf_*"
|
|
|
|
echo
|
2016-03-24 20:37:03 +01:00
|
|
|
echo "To continue, please do $0 self-remove force"
|
|
|
|
fi
|
2016-04-12 15:28:29 +02:00
|
|
|
;;
|
|
|
|
|
|
|
|
api)
|
|
|
|
zaf_zbxapi_login
|
|
|
|
case $2 in
|
|
|
|
hostid)
|
|
|
|
zaf_zbxapi_gethostid "$3"
|
|
|
|
;;
|
|
|
|
host)
|
|
|
|
zaf_zbxapi_gethost "$3"
|
|
|
|
;;
|
|
|
|
hostgroupid)
|
|
|
|
zaf_zbxapi_gethostgroupid "$3"
|
|
|
|
;;
|
|
|
|
hosts)
|
|
|
|
gid=$(zaf_zbxapi_gethostgroupid "$3")
|
|
|
|
zaf_zbxapi_gethostsingroup $gid
|
|
|
|
;;
|
|
|
|
backup-group)
|
|
|
|
gid=$(zaf_zbxapi_gethostgroupid "$3")
|
|
|
|
hosts=$(zaf_zbxapi_gethostsingroup $gid)
|
|
|
|
zaf_wrn "Will backup this hosts: $hosts"
|
|
|
|
for h in $hosts; do
|
|
|
|
hn=$(zaf_zbxapi_gethost $h)
|
|
|
|
zaf_wrn "Exporting host $hn($h)..."
|
|
|
|
zaf_zbxapi_backuphost $h >$hn.xml
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
backup-host)
|
|
|
|
hostid=$(zaf_zbxapi_gethostid "$3")
|
|
|
|
zaf_wrn "Exporting host $3($hostid)..."
|
|
|
|
zaf_zbxapi_backuphost $hostid
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "$0 api command [parameters]"
|
|
|
|
echo "hostid 'host' Get hostid from hostname"
|
|
|
|
echo "host 'hostid' Get hostname from hostid"
|
|
|
|
echo "hostgroupid 'hostgroup' Get hostgroup id from hostgroup"
|
|
|
|
echo "hosts 'hostgroup' Get hosts in group"
|
|
|
|
echo "backup-group 'hostgroup' [dir] Backup all hosts in group (get their config from zabbix and save to dir/hostname.xml)"
|
|
|
|
echo "backup-host 'host' Backup host (get config from zabbix to stdout)"
|
|
|
|
echo
|
|
|
|
exit
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
2016-03-24 15:46:42 +01:00
|
|
|
|
2016-03-23 14:37:51 +01:00
|
|
|
*)
|
2016-04-04 14:00:44 +02:00
|
|
|
echo "$0 Version ${ZAF_VERSION}. Please use some of this commands:"
|
2016-04-12 10:36:17 +02:00
|
|
|
echo "$0 Cmd [ZAF_OPTION=value] ..."
|
|
|
|
echo "Commands:"
|
|
|
|
echo "$0 update To update repo (not plugins, similar to apt-get update)"
|
|
|
|
echo "$0 upgrade To upgrade installed plugins from repo"
|
2016-04-01 15:51:45 +02:00
|
|
|
echo "$0 plugins To list installed plugins"
|
2016-03-24 15:46:42 +01:00
|
|
|
echo "$0 show [plugin] To show installed plugins or plugin info"
|
2016-04-01 15:51:45 +02:00
|
|
|
echo "$0 items [plugin] To list all suported items [for plugin]"
|
2016-04-12 10:36:17 +02:00
|
|
|
echo "$0 test [plugin[.item]] To test [all] suported items by zabbix_agentd [for plugin]"
|
|
|
|
echo "$0 get [plugin[.item]] To test [all] suported items by zabbix_get [for plugin]"
|
2016-03-24 15:46:42 +01:00
|
|
|
echo "$0 install plugin To install plugin"
|
|
|
|
echo "$0 remove plugin To remove plugin"
|
2016-04-12 15:28:29 +02:00
|
|
|
echo "$0 api To zabbix API functions. See $0 api for more info."
|
2016-03-24 15:46:42 +01:00
|
|
|
echo "$0 self-upgrade To self-upgrade zaf"
|
2016-03-30 16:09:02 +02:00
|
|
|
echo "$0 self-remove To self-remove zaf and its config"
|
2016-04-12 10:36:17 +02:00
|
|
|
echo
|
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
|
|
|
|
|