#!/bin/sh ZAF_CFG_FILE="/etc/zaf.conf" if [ -f $ZAF_CFG_FILE ]; then . $ZAF_CFG_FILE else echo "Missing config file $ZAF_CFG_FILE! Exiting." exit 2 fi # 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 [ -z "$ZAF_TMP_BASE" ] && ZAF_TMP_BASE=/tmp/zaf ZAF_TMP_DIR="${ZAF_TMP_BASE}-${USER}" [ -z "$ZAF_DEBUG" ] && ZAF_DEBUG=1 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}" if [ -f ./lib/zaf.lib.sh ]; then . ./lib/zaf.lib.sh . ./lib/os.lib.sh . ./lib/ctrl.lib.sh [ -f ./lib/zaf.${ZAF_OS}.sh ] && . ./lib/zaf.${ZAF_OS}.sh else . ${ZAF_LIB_DIR}/zaf.lib.sh . ${ZAF_LIB_DIR}/os.lib.sh . ${ZAF_LIB_DIR}/ctrl.lib.sh [ -f ${ZAF_LIB_DIR}/zaf.${ZAF_OS}.sh ] && . ${ZAF_LIB_DIR}/zaf.${ZAF_OS}.sh fi 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 } case $1 in check-agent-config) zaf_check_agent_config ;; update) zaf_wrn "Updating repository ${ZAF_REPO_GITURL}..." zaf_update_repo ;; show) shift; shift $(zaf_shift "$@") if [ -z "$1" ]; then zaf_list_plugins | while read plugin; do zaf_plugin_info $ZAF_PLUGINS_DIR/$plugin/control.zaf done 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." else 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 fi fi ;; plugins) zaf_list_plugins ;; items) shift shift $(zaf_shift "$@") if [ -z "$1" ]; then zaf_list_items else zaf_list_plugin_items "$1" fi ;; test) shift shift $(zaf_shift "$@") if echo $1|grep -q '\.'; then zaf_test_item "$1" exit fi if [ -n "$1" ]; then plugins="$@" else plugins="$(zaf_list_plugins)" fi for p in $plugins; do ! zaf_is_plugin $p && zaf_err "Unknown plugin $p" for i in $(zaf_list_plugin_items $p); do echo $i: $(zaf_test_item $i) done done ;; 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 ;; install) shift shift $(zaf_shift "$@") [ -z "$1" ] && echo "$0 install plugin [plugin]..." for p in $@; do if zaf_is_plugin "$p"; then zaf_wrn "Plugin $p already installed. Skipping installation." continue fi zaf_install_plugin "$p" installed=1 done [ -n "$installed" ] && zaf_is_root && zaf_restart_agent ;; reinstall) shift shift $(zaf_shift "$@") [ -z "$1" ] && echo "$0 reinstall plugin [plugin]..." for p in $@; do if zaf_is_plugin "$p"; then zaf_remove_plugin "$(basename $p)" reinstalled=1 fi zaf_install_plugin "$p" reinstalled=1 done [ -n "$reinstalled" ] && zaf_is_root && zaf_restart_agent ;; remove) shift shift $(zaf_shift "$@") [ -z "$1" ] && echo "$0 remove plugin [plugin]..." 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 ;; self-upgrade) shift shift $(zaf_shift "$@") [ -z "$1" ] && auto=auto zaf_os_specific zaf_check_deps zaf && zaf_err "Zaf is installed as system package. Cannot self-upgrade." rm -rf /tmp/zaf-installer && mkdir /tmp/zaf-installer if ! which curl >/dev/null; then zaf_err "Curl not found. Cannot continue. Please install it." fi zaf_fetch_url $ZAF_RAW_URL/$ZAF_VERSION/install.sh | exec sh -s $auto "$@" exit ;; self-remove) shift shift $(zaf_shift "$@") zaf_os_specific zaf_check_deps zaf && zaf_err "Zaf is installed as system package. Cannot self-remove." . /etc/zaf.conf if [ "$1" = "force" ]; then rm -rf /etc/zaf.conf ${ZAF_PLUGINS_DIR} ${ZAF_REPO_DIR} ${ZAF_LIB_DIR} \ ${ZAF_BIN_DIR}/zaf ${ZAF_AGENT_CONFIGD}/zaf_* else 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} \ ${ZAF_BIN_DIR}/zaf ${ZAF_AGENT_CONFIGD}/zaf_*" echo echo "To continue, please do $0 self-remove force" fi ;; *) echo "$0 Version ${ZAF_VERSION}. Please use some of this commands:" echo "$0 Cmd [ZAF_OPTION=value] ..." echo "Commands:" echo "$0 update To update repo" echo "$0 plugins To list installed plugins" echo "$0 show [plugin] To show installed plugins or plugin info" echo "$0 items [plugin] To list all suported items [for plugin]" 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]" echo "$0 install plugin To install plugin" echo "$0 remove plugin To remove plugin" echo "$0 self-upgrade To self-upgrade zaf" echo "$0 self-remove To self-remove zaf and its config" echo ;; esac