summaryrefslogtreecommitdiffstats
path: root/bin/cron_wrapper.sh
diff options
context:
space:
mode:
authorsyncer <root@plopp.spline.de>2012-01-11 18:17:09 +0100
committersyncer <root@plopp.spline.de>2012-01-11 18:18:29 +0100
commit657d1fc484fa0b21b979525a92ace5c9e6f63da2 (patch)
treef395b3a6f1993f4b5c4b46b8bebf04f730987739 /bin/cron_wrapper.sh
downloadmirror-sync-657d1fc484fa0b21b979525a92ace5c9e6f63da2.tar.gz
mirror-sync-657d1fc484fa0b21b979525a92ace5c9e6f63da2.tar.bz2
mirror-sync-657d1fc484fa0b21b979525a92ace5c9e6f63da2.zip
inital import
Diffstat (limited to 'bin/cron_wrapper.sh')
-rwxr-xr-xbin/cron_wrapper.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/bin/cron_wrapper.sh b/bin/cron_wrapper.sh
new file mode 100755
index 0000000..4e25802
--- /dev/null
+++ b/bin/cron_wrapper.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+##
+## Wrapper Script for Cronscripts
+## Log all errors and stdout and sends only once a day an email
+##
+## (c) Alexander Sulfrian, Sep 2008
+##
+
+echo_error() {
+ echo "$@" 1>&2
+}
+
+create_and_check_log() {
+ if [ ! -e "${1}" ]
+ then
+ touch "${1}"
+ fi
+
+ if [ ! -w "${1}" ]
+ then
+ echo_error "Unable to open log: ${1}"
+ exit 2
+ fi
+}
+
+if [ -z "${1}" -o ! -x "${1}" ]
+then
+ echo_error
+ echo_error " Usage:"
+ echo_error " ${0} filename [parameter]"
+ echo_error
+ echo_error " The filename have to exists an have to be executable."
+ echo_error
+ exit 1
+fi
+
+CRON_SCRIPT="${1}"
+CRON_SCRIPT_BASENAME="$(basename ${CRON_SCRIPT} ".sh")"
+CRON_SCRIPT_LOGNAME="${CRON_SCRIPT_BASENAME#sync-}"
+ERROR_LOG="/var/log/sync/${CRON_SCRIPT_LOGNAME}_error.log"
+LOG="/var/log/sync/${CRON_SCRIPT_LOGNAME}.log"
+
+create_and_check_log "${ERROR_LOG}"
+create_and_check_log "${LOG}"
+
+ERROR_TMP=$(mktemp -t "${CRON_SCRIPT_BASENAME}.XXXXXXXX")
+
+# parameter eins nach vorne shiften
+# damit der cronscript dateiname nicht mehr enthalten ist
+shift 1
+
+# log header
+LOG_HEADER="-------------------- $(date) --------------------"
+echo "${LOG_HEADER}" >> "${LOG}"
+
+# cron ausführen und output auffangen
+${CRON_SCRIPT} $@ >> "${LOG}" 2> "${ERROR_TMP}"
+
+if [ $(grep -v "^\s*$" "${ERROR_TMP}" | wc -l) -gt 0 ]
+then
+
+ if [ "$(date -r${ERROR_LOG} +%F)" != "$(date +%F)" ]
+ then
+ cat "${ERROR_LOG}"
+ echo "${LOG_HEADER}"
+ cat "${ERROR_TMP}"
+ echo -n > "${ERROR_LOG}"
+ else
+ echo ${LOG_HEADER} >> "${ERROR_LOG}"
+ cat "${ERROR_TMP}" >> "${ERROR_LOG}"
+ fi
+fi
+
+rm "${ERROR_TMP}"