diff --git a/Dockerfile b/Dockerfile index dbcab97..138b508 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,6 +34,7 @@ RUN install -dm 2750 -o root -g root /var/lib/monit COPY --from=build /etc/monitrc /etc/monitrc COPY ./nsupdate.sh /usr/local/bin/nsupdate COPY ./whatsmyip6.sh /usr/local/bin/whatsmyip6 +COPY ./syslogize.sh /usr/local/bin/syslogize COPY ./zeroconf.sh /usr/local/bin/zeroconf COPY ./zeroconf.conf /etc/zeroconf.conf diff --git a/syslogize.sh b/syslogize.sh new file mode 100755 index 0000000..aa4cfdf --- /dev/null +++ b/syslogize.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# A wrapper for programs that can't write to syslog. Output and error +# are sent to syslog. +# +# Use LOGGER environment variable to pass options to `logger`. They'll +# probably be system-dependent, so handle with care. +# +# Usage: +# +# LOGGER="-t program" syslogize program -o -p --tions argu ments +# +# daemonize /usr/local/bin/syslogize program + +if test $# -eq 0 ; then + grep "^#" $0 | grep -v /bin/sh | sed -re "s/^#\s*//" >&2 + + exit 1 +fi + +LOGGER="${LOGGER:--t $1}" + +propagate_signal () { + logger ${LOGGER} "Received $1 signal" + jobs -p | xargs kill -$1 +} + +for signal in HUP INT QUIT USR1 USR2 TERM; do + trap "propagate_signal ${signal}" ${signal} +done + +$@ 2>&1 | logger ${LOGGER} & + +wait $!