maintain.bash 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/bash
  2. trap "shutdown" SIGHUP SIGINT SIGQUIT SIGABRT SIGALRM SIGTERM
  3. function shutdown {
  4. log "Interrupted."
  5. exit 0
  6. }
  7. sname=`basename "${0}"`
  8. basedir=`dirname "${0}"`
  9. cd "${basedir}/.."
  10. mycfgfp="../conf/my.conf"
  11. mastcfgfp="../conf/mustard.ini"
  12. mailcfgfp="../conf/mail.conf"
  13. logfp="maintain.log"
  14. crlogfp="crawler.log"
  15. dbname=`cat "${mastcfgfp}" | grep -P '^db_name=' | sed -e 's/^db_name=//' -e 's/^"//' -e 's/"$//'`
  16. mailmta=`cat "${mailcfgfp}" | grep -P '^mta=' | sed -e 's/^mta=//' -e 's/^"//' -e 's/"$//'`
  17. mailfrom=`cat "${mailcfgfp}" | grep -P '^from=' | sed -e 's/^from=//' -e 's/^"//' -e 's/"$//'`
  18. mailto=`cat "${mailcfgfp}" | grep -P '^to=' | sed -e 's/^to=//' -e 's/^"//' -e 's/"$//'`
  19. function log {
  20. echo `date "+%Y-%m-%d %H:%M:%S.%N"` "${1}" >> "${logfp}"
  21. }
  22. # $1: comando; $2 file di log per stdout e stderr del comando
  23. function logcmd {
  24. log "Eseguo «${1}»..."
  25. $1 &>> $2
  26. ec=$?
  27. if [ "${ec}" == "0" ]; then
  28. log "Fatto, tutto ok :-)"
  29. else
  30. ok=0
  31. log "Errore: ${ec}."
  32. fi
  33. }
  34. [ -f "${logfp}" ] && rm "${logfp}"
  35. ok=1
  36. log "[[[ Inizio esecuzione ${sname} ]]]"
  37. #tar cJf run-`date +%Y-%m-%d--%H.%M.%S`.tar.xz run/
  38. buff=`ls -1 run/`
  39. [ "${buff}" != "" ] && logcmd "find run/ -type f -exec rm {} ;" "${logfp}"
  40. logcmd "php fedipact.php" "${logfp}"
  41. logcmd "php mustool.php updstats" "${logfp}"
  42. if [ `date "+%d"` != "01" ]; then # usa il gracetime di default
  43. log "Eseguo crawler.php con il gracetime di default"
  44. logcmd "php crawler.php" "${crlogfp}"
  45. else # il primo del mese usa un gracetime di 2 mesi
  46. log "Eseguo crawler.php con un gracetime di 2 mesi"
  47. logcmd "php crawler.php -g 2M" "${crlogfp}"
  48. fi
  49. logcmd "php mustool.php shuffle clean optimize" "${logfp}"
  50. ofp="maintain/backups/${dbname}_backup-`date +%Y-%m-%d--%H.%M.%S`.sql"
  51. logcmd "mysqldump --defaults-extra-file=${mycfgfp} --single-transaction -r ${ofp} ${dbname}" "${logfp}"
  52. if [ "${ec}" != "0" ]; then
  53. [ -f "${ofp}" ] && rm "${ofp}"
  54. else
  55. logcmd "xz -9 ${ofp}" "${logfp}"
  56. fi
  57. [ $ok -eq 1 ] && subj="maintain.bash: tutto ok :-)" || subj="maintain.bash: ci sono errori :-("
  58. body="[[[ ${logfp} ]]]\n\n"
  59. body+=`cat "${logfp}"`
  60. body+="\n\n[[[ Ultime 20 righe di ${crlogfp} ]]]\n\n"
  61. body+=`tail -n 20 "${crlogfp}"`
  62. echo -e "${body}" | s-nail -s "${subj}" -S v15-compat -S from="${mailfrom}" -S smtp-use-starttls -S mta="${mailmta}" "${mailto}"
  63. [ $ok -eq 1 ] && exit 0 || exit 1