Export CSV des comptes
Il existe une commande zmprov pour exporter la liste totale des comptes mais on ne récupère que les adresses email…
Voici un script qui exporte les comptes « complets » : prénom, nom, nom affiché, adresse email.
#!/bin/bash clear echo -e "##############################################################################" echo -e "# Zimbra getuserCSV.sh ver 0.1 #" echo -e "##############################################################################" # /* Paramètres */ echo "" echo -n "Nom de domaine (ex : zimbra.com) : " read NOM_DOMAINE echo -n "Nom du fichier export (ex : /tmp/utilisateurs.csv) : " read NOM_FICHIER rm -f $NOM_FICHIER touch $NOM_FICHIER # Vérification version ZCS VERSION=`su - zimbra -c 'zmcontrol -v'`; ZCS_VER="/tmp/zcsver.txt" # Récupération password LDAP ZIMBRA_LDAP_PASSWORD=`su - zimbra -c "zmlocalconfig -s zimbra_ldap_password | cut -d ' ' -f3"` LDAP_MASTER_URL=`su - zimbra -c "zmlocalconfig -s ldap_master_url | cut -d ' ' -f3"` touch $ZCS_VER echo $VERSION > $ZCS_VER echo -e "Récupération utilisateurs" 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 grep "Release 7." $ZCS_VER if [ $? = 0 ]; then USERS=`su - zimbra -c 'zmprov -l gaa'`; fi echo -e "Traitement utilisateurs" for ACCOUNT in $USERS; do NAME=`echo $ACCOUNT`; DOMAIN=`echo $ACCOUNT | awk -F@ '{print $2}'`; ACCOUNT=`echo $ACCOUNT | awk -F@ '{print $1}'`; ACC=`echo $ACCOUNT | cut -d '.' -f1` if [ $NOM_DOMAINE == $DOMAIN ] ; then OBJECT="(&(objectClass=zimbraAccount)(mail=$NAME))" dn=`/opt/zimbra/bin/ldapsearch -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep dn:` displayName=`/opt/zimbra/bin/ldapsearch -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep displayName: | cut -d ':' -f2 | sed 's/^ *//g' | sed 's/ *$//g'` givenName=`/opt/zimbra/bin/ldapsearch -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep givenName: | cut -d ':' -f2 | sed 's/^ *//g' | sed 's/ *$//g'` #userPassword=`/opt/zimbra/bin/ldapsearch -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep userPassword: | cut -d ':' -f3 | sed 's/^ *//g' | sed 's/ *$//g'` cn=`/opt/zimbra/bin/ldapsearch -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep cn: | cut -d ':' -f2 | sed 's/^ *//g' | sed 's/ *$//g'` #initials=`/opt/zimbra/bin/ldapsearch -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep initials: | cut -d ':' -f2 | sed 's/^ *//g' | sed 's/ *$//g'` sn=`/opt/zimbra/bin/ldapsearch -H $LDAP_MASTER_URL -w $ZIMBRA_LDAP_PASSWORD -D uid=zimbra,cn=admins,cn=zimbra -x $OBJECT | grep sn: | cut -d ':' -f2 | sed 's/^ *//g' | sed 's/ *$//g'` if [ $ACC == "admin" ] || [ $ACC == "wiki" ] || [ $ACC == "galsync" ] || [ $ACC == "ham" ] || [ $ACC == "spam" ]; then echo "Utilisateur système non traité : $NAME" else echo "$NAME;'$displayName';'$givenName';'$sn'" >> $NOM_FICHIER fi else echo "Utilisateur $NAME non traité" fi done echo -e "Tous les comptes ont été exportés dans $NOM_FICHIER..."