#!/bin/bash ############################################################################## # # Удаление закрытых учетных записей почты через определенное время # Удаление происходит через месяц после увольнения (на основе комментария) # # Автор: Сергей Калинин # https://nuk-svk.ru # svk@nuk-svk.ru ############################################################################## # Список учётных записей со статусом "Закрыта" (closed) zmaccts | grep closed | grep @ | while read ACCOUNT_STRING do #ACCOUNT=`echo ${ACCOUNT_STRING} | grep @ | awk '{ print $1 }'` # Квота #QUOTA_TOTAL=`zmprov ga ${ACCOUNT} | grep "zimbraMailQuota" | cut -d ":" -f2` # Использовано из квоты #QUOTA_USAGE=`zmmailbox -z -m ${ACCOUNT} gms` # Сервер с ящиком #HOSTED_ON=`zmprov ga ${ACCOUNT} | grep zimbraMailHost | awk -F: '{ print $2 }'` #echo "-------" #echo ${ACCOUNT_STRING} ACCOUNT=`echo ${ACCOUNT_STRING} | awk -F' ' '{print $1}'` ACCOUNT_CREATE_DATE=`echo ${ACCOUNT_STRING} | awk -F' ' '{print $3 " " $4}'` ACCOUNT_CREATE_DATE=$(date -d "${ACCOUNT_CLOSE_DATE}" +%s) # Дата и время последнего заходя в ящик #LAST_ON=`echo ${ACCOUNT_STRING} | grep zimbraLastLogonTimestamp: | awk -F: '{ print $2 }' ` LAST_LOGON_DATE=`echo ${ACCOUNT_STRING} | awk -F' ' '{print $5 " " $6}'` if [ "${LAST_LOGON_DATE}" != "never " ]; then LAST_LOGON_DATE_SEC=`date -d "$LAST_LOGON_DATE" +%s` else LAST_LOGON_DATE_SEC='0' fi #echo "${ACCOUNT} ${ACCOUNT_CLOSE_DATE} ${ACCOUNT_CREATE_DATE} ${LAST_LOGON_DATE} ${LAST_LOGON_DATE_SEC}" NOW_DATE_SEC=$(date +%s) NOW_DATE=$(date +%d%m%Y) # Описание DESCRIPTION=`zmprov ga ${ACCOUNT} | grep description | awk -F: '{ print $2 }' ` # Дата увольнения FIRED_DATE=`echo ${DESCRIPTION} | grep -i 'увольнение' | cut -d ' ' -f2 ` DAY=`echo ${FIRED_DATE} | cut -c 1,2` MONTH=`echo ${FIRED_DATE} | cut -c 3,4` YEAR=`echo ${FIRED_DATE} | cut -c 5,8` FIRED_DATE_SEC=$(date -d "${YEAR}${MONTH}${DAY} 23:59" +%s) #echo "${NOW_DATE} ${NOW_DATE_SEC} ${ACCOUNT}; Close: ${ACCOUNT_CREATE_DATE} ${ACCOUNT_CREATE_DATE}; Last: ${LAST_LOGON_DATE} ${LAST_LOGON_DATE_SEC}; ${DESCRIPTION}; Fired: ${FIRED_DATE} ${FIRED_DATE_SEC}" #Дата удаления (дата увольнения + 1 месяц) if [ "${LAST_LOGON_DATE_SEC}" -gt 0 ]; then DELETE_DATE=$(date +%Y%m%d -d "${YEAR}${MONTH}${DAY} + 1 month") else DELETE_DATE=$(date +%Y%m%d -d "${YEAR}${MONTH}${DAY}") fi DELETE_DATE_SEC=$(date +%s -d "${DELETE_DATE} 23:59") if [ "${DELETE_DATE_SEC}" -le "${NOW_DATE_SEC}" ]; then # Удаление ящика #echo "${NOW_DATE}: Удаление: ${ACCOUNT}; ${QUOTA_USAGE}; ${HOSTED_ON}; ${LAST_ON}; ${DESCRIPTION}; ${FIRED_DATE}; ${DELETE_DATE}" zmprov da ${ACCOUNT} echo "Date: ${NOW_DATE}; Account: ${ACCOUNT}; Create date: ${ACCOUNT_CREATE_DATE}; Last logon: ${LAST_LOGON_DATE}; ${DESCRIPTION}; Fired: ${FIRED_DATE}; Deleted: ${DELETE_DATE}" fi done