Script untuk Export Account Zimbra
Hari Jum’at akhir pekan lalu saya menuliskan tutorial backup dan restore Zimbra, termasuk export-import account dan mailbox. Ada beberapa rekan yang confused dengan penjelasan saya mengenai proses export account. Pada artikel itu, saya mengambil cara mudah dalam melakukan export daftar account yaitu dengan perintah sederhana :
[code language=’cpp’]
su – zimbra
zmprov gaa > /home/vavai/daftar-account-zimbra.csv
[/code]
Cara diatas memang secara otomatis mengekspor semua daftar account Zimbra dari sistem Zimbra yang sedang berjalan, namun memiliki 2 kelemahan mendasar yaitu :
- Untuk keperluan bulk provision melalui menu Admin Zimbra, file hasil export harus memenuhi syarat minimal 3 kolom yaitu email address, display name dan password. Untuk mengatasinya, kita harus memodifikasi file csv untuk mengisi kolom kedua dan ketiga
- Hasil import melalui bulk provision akan secara otomatis menandai semua account untuk “Change Password on Initial Login”, jadi password tidak bisa digunakan
Untuk menghindari 2 hal diatas, pagi ini saya membuatkan script otomatis untuk melakukan export account Zimbra yang bisa langsung dipergunakan tanpa melakukan proses edit secara manual. Password yang dimasukkan juga akan secara otomatis tersimpan sebagai password permanen.
SCRIPT EXPORT ACCOUNT ZIMBRA
Bisa di download disini.
[code language=’cpp’]
#!/bin/sh
#Hapus Layar
clear
echo -e “###################################################################################”
echo -e “# Zimbra exportaccountzcs.sh ver 0.0.1 #”
echo -e “# Skrip untuk export account Zimbra menjadi file zmp #”
echo -e “# Masim ‘Vavai’ Sugianto – vavai@vavai.com – https://www.vavai.com #”
echo -e “# Untuk saran dan pertanyaan silakan menggunakan Milis Komunitas Zimbra Indonesia #”
echo -e “# Link Komunitas : http://www.zimbra.web.id – http://www.opensuse.or.id #”
echo -e “###################################################################################”
# /* Variable untuk bold */
ibold=”\033[1m””\n===> ”
ebold=”\033[0m”
# /* Parameter */
echo “”
echo -n “Enter Domain Name (ex : vavai.com) : ”
read NAMA_DOMAIN
echo -n “Enter path folder and file name for exported account (ex : /home/vavai/zcsacc) : ”
read FILE
# /* Membuat file hasil export dan mengisi nama domain */
NAMA_FILE=”$FILE.zmp”
touch $NAMA_FILE
echo “createDomain $NAMA_DOMAIN” > $NAMA_FILE
# /* Check versi Zimbra yang digunakan */
VERSION=`su – zimbra -c ‘zmcontrol -v’`;
ZCS_VER=”/tmp/zcsver.txt”
touch $ZCS_VER
echo $VERSION > $ZCS_VER
echo -n “Zimbra Version : $VERSION”;
echo -e $ibold”Retrieve Zimbra User…………………………”$ebold
grep “Release 5.” $ZCS_VER
if [ $? = 0 ]; then
USERS=`su – zimbra -c ‘zmprov gaa’`;
fi
grep “Release 6.” $ZCS_VER
if [ $? = 0 ]; then
USERS=`su – zimbra -c ‘zmprov -l gaa’`;
fi
# /* Proses insert account kedalam file hasil export */
for ACCOUNT in $USERS; do
NAME=`echo $ACCOUNT`;
DOMAIN=`echo $ACCOUNT | awk -F@ ‘{print $2}’`;
ACCOUNT=`echo $ACCOUNT | awk -F@ ‘{print $1}’`;
if [ $NAMA_DOMAIN == $DOMAIN ] ;
then
echo “createAccount $NAME $ACCOUNT displayName ‘$ACCOUNT’ givenName $ACCOUNT sn $DOMAIN zimbraPasswordMustChange FALSE” >> $NAMA_FILE
echo “Adding account $NAME”
else
echo “Skipping account $NAME”
fi
done
echo “All account has been exported sucessfully into $NAMA_FILE”
echo “You may import the file into new Zimbra server with the following command :”
echo “”
echo -e $ibold”with Zimbra user”$ebold
echo “su – zimbra”
echo “zmprov < $NAMA_FILE"
echo ""
echo -e $ibold"with root permission"$ebold
echo "su"
echo " cat $NAMA_FILE | su - zimbra -c zmprov"
echo "******"
[/code]
CARA MENGGUNAKAN
[code language=’cpp’]
su
cd /opt
wget -c https://www.vavai.com/wp-content/uploads/exportacczcs.sh
chmod +x exportacczcs.sh
./exportacczcs.sh
[/code]
CATATAN
Ada beberapa catatan penting terkait dengan penggunaan script ini, antara lain :
- Untuk kesederhanaan, saya menggunakan user name sebagai password dan display name. Jika ingin menggunakan password standar untuk semua user, silakan ubah script bagian berikut :
[code language=’cpp’]
echo “createAccount $NAME $ACCOUNT displayName ‘$ACCOUNT’ givenName $ACCOUNT sn $DOMAIN zimbraPasswordMustChange FALSE” >> $NAMA_FILE
[/code]
Menjadi
[code language=’cpp’]
echo “createAccount $NAME passwordstandar displayName ‘$ACCOUNT’ givenName $ACCOUNT sn $DOMAIN zimbraPasswordMustChange FALSE” >> $NAMA_FILE
[/code]
Saya akan mencoba memperbaiki scriptnya untuk bisa mengambil password yang tersimpan pada account Zimbra. Pilihan lainnya adalah menggunakan perintah ldap untuk mengambil password yang ada, namun saat ini saya belum sempat melakukan eksplorasi lebih jauh - Script ini akan menanyakan 2 parameter yaitu nama domain yang accountnya akan diexport dan lokasi penyimpanan file zmp yang hendak dibuat. Meski demikian, saya sudah mengujicoba script ini untuk berjalan pada posisi multi domain. Script ini hanya akan mengekspor account yang ada pada domain yang diinginkan.
Bagi rekan-rekan yang menemukan bug atau punya tips lain untuk meningkatkan kemampuan script ini silakan menyampaikannya melalui halaman komentar.
Mas,
Kalau ldapnya diexport ke ldif file khan kita dapat password yang sudah di-hash. Nah pertanyaannya apakah hash passowrd tersebut dapat langsung digunakan pada csv file sehingga users kita tidak perlu mengganti passwordnya pada saat initial login.
Terima kasih sebelumnya