43 lines
1.1 KiB
Bash
43 lines
1.1 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Redirect commands from pipe A to pipe B and C
|
|
#
|
|
|
|
set -e
|
|
set -u
|
|
|
|
ICINGA_CMD=${1:-"/usr/local/icinga/var/rw/icinga.cmd"}
|
|
ICINGA_MYSQL_CMD=${2:-"/usr/local/icinga-mysql/var/rw/icinga.cmd"}
|
|
ICINGA_PGSQL_CMD=${3:-"/usr/local/icinga-pgsql/var/rw/icinga.cmd"}
|
|
|
|
trap 'rm -f "$ICINGA_CMD"; exit' EXIT SIGKILL
|
|
|
|
if [[ -p "$ICINGA_CMD" ]]; then
|
|
rm -f "$ICINGA_CMD"
|
|
fi
|
|
|
|
mkfifo -m 660 "$ICINGA_CMD"
|
|
chown icinga.icinga-cmd "$ICINGA_CMD"
|
|
|
|
while true
|
|
do
|
|
if read COMMAND
|
|
then
|
|
if [[ -p "$ICINGA_MYSQL_CMD" ]]; then
|
|
echo "$COMMAND" > "$ICINGA_MYSQL_CMD"
|
|
else
|
|
logger -p local0.err Can\'t distribute command to the Icinga MySQL instance since its command pipe doesn\'t exist
|
|
fi
|
|
if [[ -p "$ICINGA_PGSQL_CMD" ]]; then
|
|
echo "$COMMAND" > "$ICINGA_PGSQL_CMD"
|
|
else
|
|
logger -p local0.err Can\'t distribute command to the Icinga PostgreSQL instance since its command pipe doesn\'t exist
|
|
fi
|
|
fi
|
|
done < "$ICINGA_CMD" 3> "$ICINGA_CMD"
|
|
|
|
# Reset all traps
|
|
trap - EXIT SIGKILL
|
|
|
|
exit 0
|