in Server_doc, Zimbra

Automate script shell untuk notifikasi quota mailbox pada zimbra

Assalammualaikum, wr wb

Hmm.. Karena males nya untuk mengirim kan notifikasi mailbox yang penuh pada user yang banyak maka iseng-iseng untuk buat script yang sederhana dan miskin ini 😀 Fungsi nya untuk mengirim kan notifikasi kepada IT Cabang ataupun Pusat atau kepada IT Support untuk mengecek kenapa email tersebut bisa penuh, untuk selanjutnya bisa di lakukan penarikan email, mengkonfirmasi apakah email tersebut masih di gunakan atau tidak, dan lain sebagainya.

Kondisi di sini dimana semua akun email sudah di standarisasikan berdasarkan klasifikasi cabang dan pusat, dimana cabang berdasarkan nama tempat/daerah seperti bandung, semarang atau surabaya, dan pusat itu dikenali dengan nama orang seperti Harry.saputra@domain.com dan lainnya.

Okeh langsung aja, berikut adalah code script shellnya :

#!/bin/bash
#VARIABLE
temp="/tmp/tempaccountusage"
output="/tmp/accountusage"
domain="domain.com"
TANGGAL=`date +%d%m%Y-%H:%M:%S`
mail=`which mailx`

#
rm -f $temp
touch $temp
#

#CHECK ACCOUNT USAGE

#Hanya Mailbox dari User yang quota nya 100mb yang di kalkulasi (dengan grep 104857600)

/opt/zimbra/bin/zmprov gqu $server|grep $domain|grep 104857600|awk {'print $1" "$3" "$2'}|sort|while read line
do
usage=`echo $line|cut -f2 -d " "`
quota=`echo $line|cut -f3 -d " "`
user=`echo $line|cut -f1 -d " "`
status=`/opt/zimbra/bin/zmprov ga $user | grep ^zimbraAccountStatus | cut -f2 -d " "`
if [ $usage -ge 83886080 ]; then

#Jika quota melebihi 80mb maka dilakukan pemisahan notifikasi berdasarkan nama cabang

echo "$user `expr $usage / 1024 / 1024`Mb `expr $quota / 1024 / 1024`Mb ($status account) Over 80mb!" >> $temp;
fi
done

#CHECK ORDERING BY BRANCH

#Notifikasi ini untuk IT Support cabang, yang dimana user akun staff di cabang sudah di standarkan berdasarkan nama cabang, begitu juga IT Supportnya.
for sbu in "jabodetabek1" "jabodetabek2" "jabar1" "jabar2" "jateng1" "jateng2" "jatim1" "jatim2" "medan" "bali"
do
rm $output
touch $output
if grep $cabang $temp > /dev/null 2>&1;then
echo "Yth IT $cabang," >> $output
echo "" >> $output
grep $cabang $temp >> $output
echo "" >> $output
echo "Mohon di lakukan pengecekan dan penarikan email terhadap akun diatas, jangan lupa di uncheck leave message pada  account settings." >> $output
echo "" >> $output
echo "Best Regards," >> $output
echo "Mail Server" >> $output

$mail -s "Mailbox $domain Accounts Full Reminder" -r administrator@domain.com -c "syadmin1@domain.com,sysadmin2@domain.com" it.$cabang@$domain < $output

else
echo "ga ketemu" > /dev/null 2>&1;
fi
done

#CHECK FOR USER OTHER THAN BRANCH
rm $output
touch $output

#Di pisahkan antara user cabang dengan standarisasi berdasarkan nama cabang dengan user pusat yang tidak menggunakan nama cabang, notifikasi akan di kirim ke IT Support Pusat.

echo "Yth IT Pusat," >> $output
echo "" >> $output
if grep -viE 'jabodetabek1|jabodetabek2|jabar1|jabar|jabar2|jateng1|jateng|jateng2|jatim1|jatim|jatim2|medan|bali' $temp >> $output;then
echo "" >> $output
echo "Mohon di lakukan pengecekan dan penarikan email terhadap akun diatas, jangan lupa di uncheck leave message pada account settings." >> $output
echo "" >> $output
echo "Best Regards," >> $output
echo "Mail Server" >> $output
$mail -s "Mailbox $domain Accounts Full Reminder" -r administrator@domain.com -c "sysadmin1@domain.com,sysadmin2@domain.com" itsupport.pusat@domain < $output
else
echo "ga ketemu" > /dev/null 2>&1;
fi

Preview :


Maklum saja jika ada kesalahan, karena penulis juga manusia biasa 🙂 hanya ingin berbagi.