#!/bin/bash trap "shutdown" SIGHUP SIGINT SIGQUIT SIGABRT SIGALRM SIGTERM function shutdown { log "Interrupted." exit 0 } sname=`basename "${0}"` basedir=`dirname "${0}"` cd "${basedir}/.." mycfgfp="../conf/my.conf" mastcfgfp="../conf/mustard.ini" mailcfgfp="../conf/mail.conf" forceresurrfp=".forceresurr" logfp="maintain.log" crlogfp="crawler.log" dbname=`cat "${mastcfgfp}" | grep -P '^db_name=' | sed -e 's/^db_name=//' -e 's/^"//' -e 's/"$//'` mailmta=`cat "${mailcfgfp}" | grep -P '^mta=' | sed -e 's/^mta=//' -e 's/^"//' -e 's/"$//'` mailfrom=`cat "${mailcfgfp}" | grep -P '^from=' | sed -e 's/^from=//' -e 's/^"//' -e 's/"$//'` mailto=`cat "${mailcfgfp}" | grep -P '^to=' | sed -e 's/^to=//' -e 's/^"//' -e 's/"$//'` function log { echo `date "+%Y-%m-%d %H:%M:%S.%N"` "${1}" >> "${logfp}" } # $1: comando; $2 file di log per stdout e stderr del comando function logcmd { log "Eseguo «${1}»..." $1 &>> $2 ec=$? if [ "${ec}" == "0" ]; then log "Fatto, tutto ok :-)" else ok=0 log "Errore: ${ec}." fi } [ -f "${logfp}" ] && rm "${logfp}" ok=1 log "[[[ Inizio esecuzione ${sname} ]]]" #tar cJf run-`date +%Y-%m-%d--%H.%M.%S`.tar.xz run/ buff=`ls -1 run/` [[ "${buff}" != "" ]] && logcmd "find run/ -type f -exec rm {} ;" "${logfp}" logcmd "php fedipact.php" "${logfp}" logcmd "php mustool.php updstats" "${logfp}" day=`date "+%d"` month=`date "+%m"` # il primo di ogni anno, oppure se esiste il file “.forceresurr”, usa un gracetime di 1000 anni if [[ "${day}" == "01" && "${month}" == "01" ]] || [[ -f "${forceresurrfp}" ]]; then log "Eseguo crawler.php con un gracetime di 1000 anni" logcmd "php crawler.php -g 1000y" "${crlogfp}" elif [[ "${day}" == "01" ]]; then # il primo di ogni mese che non è anche primo dell'anno usa un gracetime di 1 anno log "Eseguo crawler.php con un gracetime di 1 anno" logcmd "php crawler.php -g 1y" "${crlogfp}" else # ogni altro giorno usa il gracetime di default (30 giorni) log "Eseguo crawler.php con il gracetime di default (30 giorni)" logcmd "php crawler.php" "${crlogfp}" fi [[ -f "${forceresurrfp}" ]] && rm "${forceresurrfp}" logcmd "php mustool.php shuffle clean optimize" "${logfp}" ofp="maintain/backups/${dbname}_backup-`date +%Y-%m-%d--%H.%M.%S`.sql" logcmd "mysqldump --defaults-extra-file=${mycfgfp} --single-transaction -r ${ofp} ${dbname}" "${logfp}" if [[ "${ec}" != "0" ]]; then [[ -f "${ofp}" ]] && rm "${ofp}" else logcmd "xz -9 ${ofp}" "${logfp}" fi buff=`ls -1rt maintain/backups/${dbname}_backup-*.sql.xz | head -n -10` for fn in $buff; do rm "$fn"; done [[ $ok -eq 1 ]] && subj="maintain.bash: tutto ok :-)" || subj="maintain.bash: ci sono errori :-(" body="[[[ ${logfp} ]]]\n\n" body+=`cat "${logfp}"` body+="\n\n[[[ Ultime 20 righe di ${crlogfp} ]]]\n\n" body+=`tail -n 20 "${crlogfp}"` echo -e "${body}" | s-nail -s "${subj}" -S v15-compat -S from="${mailfrom}" -S smtp-use-starttls -S mta="${mailmta}" "${mailto}" [[ $ok -eq 1 ]] && exit 0 || exit 1