Repaired userparms creation and including libraries

1.2
Lukas Macura 2016-04-19 10:37:39 +02:00
parent 84f7e55078
commit ddbdff55d9
7 changed files with 48 additions and 29 deletions

View File

@ -281,7 +281,7 @@ zaf_install_all() {
for i in lib/zaf.lib.sh lib/os.lib.sh lib/ctrl.lib.sh lib/cache.lib.sh lib/zbxapi.lib.sh README.md; do
zaf_install $i ${ZAF_LIB_DIR}/ || zaf_err "Error installing $i"
done
for i in lib/zaflock lib/preload.sh; do
for i in lib/zaflock lib/zafcache lib/preload.sh; do
zaf_install_bin $i ${ZAF_LIB_DIR}/ || zaf_err "Error installing $i"
done
zaf_install_dir ${ZAF_BIN_DIR}
@ -295,8 +295,10 @@ zaf_install_all() {
zaf_postconfigure() {
if zaf_is_root; then
${INSTALL_PREFIX}/${ZAF_BIN_DIR}/zaf cache-clean
[ "${ZAF_GIT}" = 1 ] && ${INSTALL_PREFIX}/${ZAF_BIN_DIR}/zaf update
${INSTALL_PREFIX}/${ZAF_BIN_DIR}/zaf reinstall zaf || zaf_err "Error installing zaf plugin."
${INSTALL_PREFIX}/${ZAF_BIN_DIR}/zaf agent-config || zaf_err "Error configuring agent."
if zaf_is_root && ! zaf_test_item zaf.framework_version; then
echo "Something is wrong with zabbix agent config."
echo "Ensure that zabbix_agentd reads ${ZAF_AGENT_CONFIG}"

View File

@ -8,7 +8,7 @@ zaf_ctrl_get_items() {
# Get item body from stdin
# $1 itemname
zaf_ctrl_get_item_block() {
grep -v '^#' | awk '/^Item '$1'/ { i=0;
grep -vE '^#[a-zA-Z ]' | awk '/^Item '$1'/ { i=0;
while (i==0) {
getline;
if (/^\/Item/) exit;
@ -22,7 +22,7 @@ zaf_ctrl_get_item_block() {
# Get global plugin block body from stdin
# $1 itemname
zaf_ctrl_get_global_block() {
grep -v '^#' | awk '{ i=0; print $0;
grep -vE '^#[a-zA-Z ]' | awk '{ i=0; print $0;
while (i==0) {
getline;
if (/^Item /) exit;
@ -33,7 +33,7 @@ zaf_ctrl_get_global_block() {
# Get item multiline option
# $1 optionname
zaf_block_get_moption() {
awk '/^'$1'::$/ { i=0; print $0;
awk '/^'$1'::$/ { i=0;
while (i==0) {
getline;
if (/^::$/) {i=1; continue;};
@ -181,6 +181,7 @@ zaf_ctrl_install() {
# Generates zabbix cfg from control file
# $1 control
# $2 pluginname
# $3 if nonempty, only return cfg, do not generate scripts
zaf_ctrl_generate_cfg() {
local items
local cmd
@ -211,20 +212,25 @@ zaf_ctrl_generate_cfg() {
fi
cache=$(zaf_ctrl_get_item_option $1 $i "Cache")
if [ -n "$cache" ]; then
cache="_cache '$cache' "
cache="${ZAF_LIB_DIR}/zafcache '$cache' "
fi
cmd=$(zaf_ctrl_get_item_option $1 $i "Cmd")
if [ -z "$cache" ] && [ -z "$lock" ]; then
preload="${ZAF_LIB_DIR}/preload.sh "
else
preload=""
fi
if [ -n "$cmd" ]; then
$(which echo) "UserParameter=$ikey,${ZAF_LIB_DIR}/preload.sh $cache $lock$cmd";
printf "%s" "UserParameter=$ikey,${preload}${cache}${lock}${cmd}"; echo
continue
fi
cmd=$(zaf_ctrl_get_item_option $1 $i "Script")
if [ -n "$cmd" ]; then
zaf_ctrl_get_item_option $1 $i "Script" | \
zaf_far '{INCLUDES}' '. /etc/zaf.conf; . ${ZAF_LIB_DIR}/zaf.lib.sh; . ${ZAF_LIB_DIR}/ctrl.lib.sh; . ${ZAF_LIB_DIR}/zbxapi.lib.sh; . ${ZAF_LIB_DIR}/cache.lib.sh; ' \
zaf_far '{INCLUDES}' ". $ZAF_LIB_DIR/preload.sh; " \
>${ZAF_TMP_DIR}/${iscript}.sh;
zaf_install_bin ${ZAF_TMP_DIR}/${iscript}.sh ${ZAF_PLUGINS_DIR}/$2/
$(which echo) "UserParameter=$ikey,$cache $lock${ZAF_PLUGINS_DIR}/$2/${iscript}.sh $args";
[ -z "$3" ] && zaf_install_bin ${ZAF_TMP_DIR}/${iscript}.sh ${ZAF_PLUGINS_DIR}/$2/
printf "%s" "UserParameter=$ikey,${preload}${cache}${lock}${ZAF_PLUGINS_DIR}/$2/${iscript}.sh $args"; echo
continue;
fi
zaf_err "Item $i declared in control file but has no Cmd, Function or Script!"

View File

@ -19,19 +19,10 @@ trap "rm -rif ${ZAF_TMP_DIR}" EXIT
export ZAF_LIB_DIR
export ZAF_TMP_DIR
export ZAF_CACHE_DIR
export ZAF_PLUGINS_DIR
if [ "$1" = "_cache" ] || [ "$1" = "_nocache" ] ; then
[ "$1" = "_nocache" ] && export ZAF_NOCACHE=1
shift
seconds=$1
shift
parms=$(echo $*|tr -d ' ')
if ! zaf_fromcache $parms; then
([ "$(basename $0)" = "preload.sh" ] && [ -n "$*" ] && $@ ) | zaf_tocache_stdin $parms $seconds
fi
else
[ "$(basename $0)" = "preload.sh" ] && [ -n "$*" ] && $@
fi
[ "$(basename $0)" = "preload.sh" ] && [ -n "$*" ] && $@

View File

@ -412,7 +412,8 @@ zaf_list_items() {
zaf_get_item() {
if which zabbix_get >/dev/null; then
zabbix_get -s localhost -k "$1" || zaf_wrn "Cannot reach agent on localhost. Please localhost to Server list."
zaf_dbg zabbix_get -s localhost -k "'$1'"
(zabbix_get -s localhost -k "$1" | tr '\n' ' '; echo) || zaf_wrn "Cannot reach agent on localhost. Please localhost to Server list."
return 11
else
zaf_wrn "Please install zabbix_get binary to check items over network."
@ -421,7 +422,12 @@ zaf_get_item() {
}
zaf_test_item() {
$ZAF_AGENT_BIN -t "$1"
if $ZAF_AGENT_BIN -t "$1" | grep ZBX_NOTSUPPORTED; then
return 1
else
$ZAF_AGENT_BIN -t "$1" | tr '\n' ' '
echo
fi
}
zaf_precache_item() {

17
lib/zafcache Normal file
View File

@ -0,0 +1,17 @@
#!/bin/sh
. $(dirname $0)/preload.sh
help() {
zaf_err "$0 seconds cmd..."
}
seconds=$1
shift
[ -z "$*" ] && help
parms=$(echo $*|tr -d ' ')
if ! zaf_fromcache "$parms"; then
$@ | zaf_tocache_stdin "$parms" "$seconds"
fi

View File

@ -1,12 +1,9 @@
#!/bin/sh
. /etc/zaf.conf
. ${ZAF_LIB_DIR}/zaf.lib.sh
. $(dirname $0)/preload.sh
help() {
echo "$0 key cmd"
exit 2
zaf_err "$0 key cmd"
}
lkey="$1"

2
zaf
View File

@ -77,7 +77,7 @@ userparms)
for plugin in $(zaf_list_plugins); do
plugindir=$ZAF_PLUGINS_DIR/$plugin
control=$plugindir/control.zaf
zaf_ctrl_generate_cfg "${control}" "${plugin}" \
zaf_ctrl_generate_cfg "${control}" "${plugin}" "noscripts" \
| zaf_far '{PLUGINDIR}' "${plugindir}"
done
;;