vcard2ldap : mise-à-jour d'un serveur LDAP avec un fichier vcard
Ce petit script permet de lire un fichier contenant des enregistrements au format vcard pour les insérer dans un serveur LDAP
Ce script a permis par exemple de prendre un export vcard du carnet d'adresses d'un serveur Domino pour le mettre dans un serveur OpenLDAP.
#!/usr/bin/env python
import ldap
import string
ldapCnx = ldap.open("serveur-ldap")
ldapCnx.simple_bind_s("admin-dn","password")
vcfFile = open("vcardfile.vcf")
line = "dummy"
cn = ""
ldapItem = [('objectClass',['top','person',
'organizationalPerson','inetOrgPerson']),
('o',"my_organisation")]
while line:
line = vcfFile.readline()
colonne = string.split(line,':')
if colonne[0] == 'N':
names = string.split(colonne[1],';')
cn = string.strip(names[1]+' '+names[0])
ldapItem += [('cn',cn)]
ldapItem += [('sn',names[0])]
if names[1] != '':
ldapItem += [('givenName',names[1])]
if colonne[0] == 'EMAIL;INTERNET':
mail = string.rstrip(colonne[1])
ldapItem += [('mail',mail)]
if string.find(line,"END:VCARD")!=-1:
base_dn = 'cn='+cn+',o=my_organisation,dc=domain'
print base_dn
print ldapItem
try:
ldapCnx.add_s(base_dn,ldapItem)
except ldap.ALREADY_EXISTS:
base_dn = 'cn='+cn+' Bis,o=my_organisation,dc=domain'
ldapCnx.add_s(base_dn,ldapItem)
ldapItem = [('objectClass',['top','person',
'organizationalPerson','inetOrgPerson']),
('o',"my_organisation")]
names=""
cn=""
base_dn=""
Voici les différentes choses à adapter dans le script pour prendre en compte votre installation.
ldapCnx = ldap.open("serveur-ldap")
ldapCnx.simple_bind_s("admin-dn","password")
Vous devez modifier le nom de votre serveur ldap, ainsi que le dn et le mot de passe de l'utilisateur administrateur du serveur.
vcfFile = open("vcardfile.vcf")
Modifier le nom du fichier qui contient les enregistrements vcard.
ldapItem =
[('objectClass',['top','person','organizationalPerson','inetOrgPerson']),
('o',"my_organisation")]
Modifier les différents item que vous voulez ajouter à votre enregistrement LDAP.
if string.find(line,"END:VCARD")!=-1:
base_dn = 'cn='+cn+',o=my_organisation,dc=domain'
Modifier le format du base_dn de vos enregistrements
except ldap.ALREADY_EXISTS:
base_dn = 'cn='+cn+' Bis,o=my_organisation,dc=domain'
Si l'enregistrement existe déjà, on le crée en ajoutant 'Bis' dans le dn.
ldapItem =
[('objectClass',['top','person','organizationalPerson','inetOrgPerson']),
('o',"my_organisation")]
Modifier cette ligne comme la ligne en début de script.
Le script complet peut-être téléchargé ici
Commentaires
Afficher les commentaires en Vue non groupée | Vue groupée
Incite sur :
Je suis vraiment intéressé par votre script permettant de transformer mes fichiers vcards en format compatible ldap.
Le script que vous proposez n'est pas disponible au téléchargement dans sa version complète.
J'aimerai vraiment pouvoir le télécharger. Pouvez-vous m'aider ?
David sur :
Je viens de faire le nécessaire pour le téléchargement (sinon il restait le copier/coller ).
David.