zimbra-script/delete-closed-accounts.sh

69 lines
3.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/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