diff --git a/offsite-power-check.sh b/offsite-power-check.sh index 44f47989..f10a31bf 100755 --- a/offsite-power-check.sh +++ b/offsite-power-check.sh @@ -2,9 +2,13 @@ PW_FOLDER='/opt/idssys/powerwall' PW_LOGFOLDER=${PW_FOLDER}/logs +PW_LOGARCHIVE=${PW_FOLDER}/logs/archive +PW_TMPFOLDER=${PW_FOLDER}/.tmp +[ ! -d ${PW_LOGFOLDER} ] && mkdir ${PW_LOGFOLDER} +[ ! -d ${PW_LOGARCHIVE} ] && mkdir ${PW_LOGARCHIVE} +[ ! -d ${PW_TMPFOLDER} ] && mkdir ${PW_TMPFOLDER} PW_LOGFILE=${PW_LOGFOLDER}/logfile PW_LOGPOWER=${PW_LOGFOLDER}/log-power -PW_TMPFOLDER=${PW_FOLDER}/.tmp [ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE} [ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER} @@ -132,10 +136,37 @@ PWO_RESTART() { } +LOGROTATE(){ + lm=`expr $(date +'%m') - 1` + if [ ${lm} = 0 ]; then + lm=12 + ly=`expr $(date +'%Y') - 1` + else + ly=$(date +'%Y') + fi + [ ${lm} -lt 10 ] && lm="0${lm}" + ARCHIVEFOLDER=${PW_LOGARCHIVE}/${ly}-${lm} + mkdir -p ${ARCHIVEFOLDER} + mv ${PW_LOGFOLDER}/log* ${ARCHIVEFOLDER}/ 2> /dev/null + [ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE} + [ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER} + backupstokeep=(`ls -d ${PW_LOGARCHIVE}/* 2> /dev/null | sort | tail -12`) + for folder in $(ls -d ${PW_LOGARCHIVE}/* | sort -r); do + keep=0 + for filetokeep in ${backupstokeep[@]}; do + if [ "${folder}" == "${filetokeep}" ]; then + keep=1; break + fi + done; + [ ${keep} == 0 ] && rm -Rf ${folder} + done +} + case $1 in start) PWO_START &;; stop) PWO_STOP;; restart) PWO_RESTART;; + logrotate) LOGROTATE;; update) cd ${PW_FOLDER} if [ "`git log --pretty=%H ...refs/heads/master^ | head -n 1`" != "`git ls-remote origin -h refs/heads/master |cut -f1`" ]; then