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