i need help for a script import users from AD for use Zimbra as a messagerie server in my environment Microsoft
- Machine used :
> Microsoft server 2008 r2 ( AD + DNS (domain name : fsts.ma) )
> Ubuntu 12.04 LTS ( Zimbra server 8.2 )
when i execute this script, its show me that i have 2 errors ( ldapserach : command not found; zmacct : command not found )
So this is the script :


!/bin/bash
#Script de SYNC AD --> Zimbra
#Script sous license GNU/GPL
#ROSENKRANZ Denis
#denisrosenkranz.com
#Script pour créer des adresses emails a partir du nom d'utilisateur de l'Active directory : AD_USERNAME@domain.lan
#SCRIPT A LANCER EN TANT QU' UTILISATEUR "zimbra"

#Déclaration des variables:

#Nom de domaine Active Directory (ex= domain.lan)
domain="fsts.ma"

#Fichiers temporaires ou seront stockés les données de comptes
Names=tmpNames.txt
Firstnames=tmpFirstNames.txt
Nicknames=tmpNicks.txt
ADAccounts=tmpAccounts.txt
ZAccounts=tmpZmbusers.txt
Mails=tmpMails.txt
Firstlastname=tmpFirstlastname.txt
AdDB=AdDB.txt

#Paramêtres sur serveur AD
#IP Du serveur Active Directory
ip="//10.10.10.1/"
#FQDN d'de l'OU d'ou vous voulez extraire les comptes (ex: OU=ZimbraUsers,DC=domain,DC=lan)
ou="OU=Users,DC=fsts,DC=ma"
#FQDN d'un utilisateur (ex: CN=Administrator,CN=Users,DC=domain,DC=lan)
user="CN=Administrateur,OU=Users,DC=fsts,DC=ma"
#Mot de passe de cet utilisateur
pass="123.pol"

#COS dans lequel on veut mettre ces nouveuas utlisateurs (default si COs par default)
COS="default"

#On récupère les informations des comptes sur l'active directory

#Récupérations des utilisateurs de l'Active Directory
ldapsearch -x -H ldap://$ip -b "$ou" -D "$user" -w $pass "(&(sAMAccountName=*)(objectClass=user))" > $AdDB

#On récupère les noms
cat $AdDB | grep sn | awk '{print $2}' > $Names

#On récupère les prénoms
cat $AdDB | grep givenName | awk '{print $2}' > $Firstnames

#On récupère les noms d'utilisateurs
cat $AdDB | grep sAMAccountName | awk '{print $2}' > $Nicknames

#Transformation des noms d'utilisateurs en adresses Emails
sed 's/.*/&'@$domain'/' $Nicknames > $Mails

#Suppresion du filtre
sed /filter/d $Mails > tmpMails2.txt
mv tmpMails2.txt $Mails

#On fusionne toutes ces données dans un seul fichier
paste -d ':' $Names $Firstnames $Mails > $ADAccounts

#On récupère les comptes existants dans Zimbra
zmaccts | grep "@$domain" | awk '{print $1}' > $ZAccounts

#On formatte correctement les fichiers Mails.txt et zmbuser.txt

sort $Mails > tmpMails2.txt
mv tmpMails2.txt $Mails

sort $ZAccounts > tmpzmbusers2.txt
mv tmpzmbusers2.txt $ZAccounts

#On compare les comptes existants et les comptes sur l'Active Directory
LISTDIFF=$(diff -u -i -B $ZAccounts $Mails | grep $domain | grep "+" | sed s/^+//g)

#Si il existe une nouvelle adresse on la crée dans Zimbra
for i in $LISTDIFF; do
EMAIL=$(echo $i | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz')
FIRSTNAME=$(cat $ADAccounts | grep $i | cut -d ':' -f2 )
LASTNAME=$(cat $ADAccounts | grep $i | cut -d ':' -f1 )
echo 'Rajout du compte mail: ' $FIRSTNAME $LASTNAME $EMAIL

#Création des comptes dans Zimbra
#FDD00123456789 est le mot de passe par défaut des comptes, si l'authentification des utilisateurs se fait par l'AD ce mot de passe ne sera pas utilisé
zmprov ca $EMAIL FDD00123456789 displayName ''$FIRSTNAME' '$LASTNAME'' givenName $FIRSTNAME sn $LASTNAME

#On place l'utilisateur dans le COS mis en variable
zmprov sac $EMAIL $COS

#On rajoute l'adresse dans l'AD
#adtool attributeadd ''$FIRSTNAME' '$LASTNAME'' mail $EMAIL
done
#On supprime tout les fichiers temporaires
rm -f tmp*
exit 0