#!/bin/bash state=${1:-live} lockfile="/tmp/zabbix.trap.${state}.lock" tempfile=$(mktemp /tmp/zabbix.trap.${state}.tmp.XXXXXXXXXX) trapdir="$(dirname $(readlink -f $0))/trap.d/${state}" errors=0 if [[ ! -d "$trapdir" ]]; then echo "ERROR: Trap directory doesn't exist: $trapdir " exit 5 fi if [[ -r "${lockfile}" ]]; then if [[ $(pgrep -f $(readlink -f $0) | wc -l) -gt 0 ]]; then runs=$(head -n1 ${lockfile}) if [[ $runs -ge 3 ]]; then for s in ${trapdir}/${state}/* do echo "Kill: $s " pkill -9 -f $s done rm -f /tmp/zabbix.trap.${state}.lock rm -f /tmp/zabbix.trap.${state}.tmp.* pkill -9 -f $(readlink -f $0) else echo "$[ ++runs ]" > ${lockfile} exit 0 fi fi fi echo 1 > ${lockfile} for s in ${trapdir}/${state}/* do $s > ${tempfile} 2> /dev/null if [ $? -ne 0 ]; then errors=1 fi done #cat ${tempfile} #rm -f ${tempfile} #echo #echo "Errors: $errors" #exit 0 zsend=$(zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -i ${tempfile}) if [ $? -ne 0 ]; then echo "ERROR" else if [[ $errors -gt 0 ]]; then echo "WARN" else echo "OK" fi fi rm -f ${tempfile} rm -f /tmp/zabbix.trap.${state}.lock