Skip to content

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

Rétroliens

Pas de rétroliens

Commentaires

Afficher les commentaires en Vue non groupée | Vue groupée

Incite sur :

Bonjour,

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 :

Bonjour,

Je viens de faire le nécessaire pour le téléchargement (sinon il restait le copier/coller ;-)).

David.

Ajouter un commentaire

Marquer un texte en gras: *mot*, souligner un texte: _mot_.
Les smilies standard comme :-) et ;-) sont convertis en images.
Les adresses Email ne sont pas affichées, et sont seulement utilisées pour la communication.

Pour éviter le spam par des robits automatisés (spambots), merci d'entrer les caractères que vous voyez dans l'image ci-dessous dans le champ de fomulaire prévu à cet effet. Assurez-vous que votre navigateur gère et accepte les cookies, sinon votre commentaire ne pourra pas être enregistré.
CAPTCHA

Form options
tweetbackcheck