diff --git a/control b/control index 646b13b..a3bb40a 100644 --- a/control +++ b/control @@ -12,7 +12,7 @@ Maintainer: Lukas Macura Item: version Returns version of zaf installed. -Item-cmd-version: {ZAFLIB} zaf_list_plugins +Item-cmd-version: {ZAFFUNC} zaf_list_plugins Item: plugins Returns installed plugins diff --git a/lib/zaf.lib.sh b/lib/zaf.lib.sh index e47ef49..ad2eecc 100644 --- a/lib/zaf.lib.sh +++ b/lib/zaf.lib.sh @@ -1,11 +1,16 @@ +############################################ Init part +# Get all config variables and initialise TMP + +! [ -f /etc/zaf.conf ] && { echo "Config file /etc/zaf.conf does not exists! Exiting."; exit 2; } . /etc/zaf.conf . ${ZAF_LIB_DIR}/jshn.sh ZAF_TMP_DIR="${ZAF_TMP_BASE}-${USER}-$$" trap "rm -rif ${ZAF_TMP_DIR}" EXIT - ! [ -d "${ZAF_TMP_DIR}" ] && mkdir "${ZAF_TMP_DIR}" +############################################ Common routines + # Fetch url to stdout # $1 url # It supports real file, file:// and other schemes known by curl @@ -20,7 +25,7 @@ zaf_fetch_url() { fi case $scheme in http|https|ftp|file) - curl -f -s -L -o - "$1"; + curl -k -f -s -L -o - "$1"; ;; esac } @@ -42,6 +47,43 @@ zaf_far(){ eval $sedcmd } +# Initialises discovery function +zaf_discovery_init(){ + json_init + json_add_array data +} + +# Add row(s) to discovery data +zaf_discovery_add_row(){ + json_add_object "obj" + while [ -n "$1" ]; do + json_add_string "$1" "$2" + shift + shift + done + json_close_object +} + +# Dumps json object +zaf_discovery_dump(){ + json_close_array + json_dump +} + +# Read standard input as discovery data. Columns are divided by space. +# Arguments are name of variables to discovery. +# Dumps json to stdout +zaf_discovery(){ + local a b c d e f g h i j; + zaf_discovery_init + while read a b c d e f g h i j; do + zaf_discovery_add_row "$1" "${1:+${a}}" "$2" "${2:+${b}}" "$3" "${3:+${c}}" "$4" "${4:+${d}}" "$5" "${5:+${e}}" "$6" "${6:+${f}}" "$7" "${7:+${g}}" "$8" "${8:+${h}}" "$9" "${9:+${i}}" + done + zaf_discovery_dump +} + +############################################ Zaf internal routines + # Restart zabbix agent zaf_restart_agent() { ${ZAF_AGENT_RESTART} @@ -155,7 +197,8 @@ zaf_install_plugin() { zaf_ctrl_install_bin "${control}" "${plugin}" zaf_ctrl_generate_cfg "${control}" "${plugin}" | \ zaf_far '{PLUGINDIR}' "$plugindir" | \ - zaf_far '{ZAFLIB}' ". ${ZAF_LIB_DIR}/zaf.lib.sh; " | \ + zaf_far '{ZAFLIB}' ". ${ZAF_LIB_DIR}/zaf.lib.sh; . " | \ + zaf_far '{ZAFFUNC}' ". ${ZAF_LIB_DIR}/zaf.lib.sh; " | \ zaf_far '{ZAFLOCK}' "${ZAF_LIB_DIR}/zaflock '$plugin' " \ >${ZAF_AGENT_CONFIGD}/zaf_${plugin}.conf zaf_restart_agent