diff options
author | syncer <root@plopp.spline.de> | 2012-01-11 18:17:09 +0100 |
---|---|---|
committer | syncer <root@plopp.spline.de> | 2012-01-11 18:18:29 +0100 |
commit | 657d1fc484fa0b21b979525a92ace5c9e6f63da2 (patch) | |
tree | f395b3a6f1993f4b5c4b46b8bebf04f730987739 /bin/cron_wrapper.sh | |
download | mirror-sync-657d1fc484fa0b21b979525a92ace5c9e6f63da2.tar.gz mirror-sync-657d1fc484fa0b21b979525a92ace5c9e6f63da2.tar.bz2 mirror-sync-657d1fc484fa0b21b979525a92ace5c9e6f63da2.zip |
inital import
Diffstat (limited to 'bin/cron_wrapper.sh')
-rwxr-xr-x | bin/cron_wrapper.sh | 74 |
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}" |