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
Wednesday, February 11. 2009 at 09:36 (Reply)
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 ?
Friday, April 10. 2009 at 09:16 (Reply)
Je viens de faire le nécessaire pour le téléchargement (sinon il restait le copier/coller
David.