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