69 lines
3.3 KiB
Bash
69 lines
3.3 KiB
Bash
|
#!/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
|