Help script import users from AD
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