主题: 关于批量导入生成的ldif文件不能导入的问题。
使用python create_mail_user_OpenLDAP.py aaa.csv 后生成aaa.ldif文件然后通过my ldap server导入报错 导入不成功。
支持 Red Hat Enterprise Linux, CentOS, Scientific Linux, Debian, Ubuntu, FreeBSD, OpenBSD
您尚未登陆。 请选择登陆或是注册一个新账号。
iRedMail 开源邮件服务解决方案 » iRedMail 技术支持 » 关于批量导入生成的ldif文件不能导入的问题。
使用python create_mail_user_OpenLDAP.py aaa.csv 后生成aaa.ldif文件然后通过my ldap server导入报错 导入不成功。
csv格式如下
kwoks.cc,chang_p,78976734,常平,10,all:gad_all
将生成的 LDIF 文件里的一个帐号的 LDIF 内容贴一下看看。
以下是 utf-8 格式 csv文件生成的ldif 文件其中一个帐号的内容
dn:: bWFpbD1jaGFuZ19wQO+7v2lzY3JlYXRlLmNvbSxvdT1Vc2Vycyxkb21haW5OYW1lPe+7v2l
zY3JlYXRlLmNvbSxvPWRvbWFpbnMsZGM9aXNjcmVhdGUsZGM9Y29t
changetype: add
objectClass: inetOrgPerson
objectClass: mailUser
objectClass: shadowAccount
objectClass: amavisAccount
mail:: Y2hhbmdfcEDvu79pc2NyZWF0ZS5jb20=
userPassword: 19410919cp
mailQuota: 10
cn:: 5bi46JCN
sn: chang_p
uid: chang_p
storageBaseDirectory: /var/vmail/vmail01
mailMessageStore:: 77u/aXNjcmVhdGUuY29tL2MvY2gvY2hhL2NoYW5nX3AtMjAxMC4wNy4yO
S4wMS41NS40Ni8=
homeDirectory:: L3Zhci92bWFpbC92bWFpbDAxL++7v2lzY3JlYXRlLmNvbS9jL2NoL2NoYS9j
aGFuZ19wLTIwMTAuMDcuMjkuMDEuNTUuNDYv
accountStatus: active
mtaTransport: dovecot
enabledService: mail
enabledService: smtp
enabledService: pop3
enabledService: pop3secured
enabledService: imap
enabledService: imapsecured
enabledService: deliver
enabledService: forward
enabledService: senderbcc
enabledService: recipientbcc
enabledService: managesieve
enabledService: internal
enabledService: managesievesecured
enabledService: shadowaddress
enabledService: displayedInGlobalAddressBook
memberOfGroup:: YWxsQO+7v2lzY3JlYXRlLmNvbQ==
memberOfGroup:: Z2FkX2FsbEDvu79pc2NyZWF0ZS5jb20=
以下是ascii 格式 csv文件生成的ldif
dn: mail=chang_p@kwoks.cc,ou=Users,domainName=kwoks.cc,o=domains,dc=
kwoks,dc=cc
changetype: add
objectClass: inetOrgPerson
objectClass: mailUser
objectClass: shadowAccount
objectClass: amavisAccount
mail: chang_p@kwoks.cc
userPassword: 19410919cp
mailQuota: 10
cn:: s6PGvA==
sn: chang_p
uid: chang_p
storageBaseDirectory: /var/vmail/vmail01
mailMessageStore: kwoks.cc/c/ch/cha/chang_p-2010.07.29.06.27.26/
homeDirectory: /var/vmail/vmail01/kwoks.cc/c/ch/cha/chang_p-2010.07.29.0
6.27.26/
accountStatus: active
mtaTransport: dovecot
enabledService: mail
enabledService: smtp
enabledService: pop3
enabledService: pop3secured
enabledService: imap
enabledService: imapsecured
enabledService: deliver
enabledService: forward
enabledService: senderbcc
enabledService: recipientbcc
enabledService: managesieve
enabledService: internal
enabledService: managesievesecured
enabledService: shadowaddress
enabledService: displayedInGlobalAddressBook
memberOfGroup: all@kwoks.cc
memberOfGroup: gad_all@kwoks.cc
ascii 格式的看上去没问题。你导入时是什么错误信息?
# Prompt to import user data.
'''
Would you like to import them now?""" % (ldif_file)
answer = raw_input('[Y|n] ').lower().strip()
if answer == '' or answer == 'y':
# Import data.
conn = ldap.initialize(LDAP_URI)
conn.set_option(ldap.OPT_PROTOCOL_VERSION, 3) # Use LDAP v3
conn.bind_s(BINDDN, BINDPW)
conn.unbind()
else:
pass
'''
这一段代码并没有执行。
然后 我用了phpldapadmin导入(ascii生成的ldif)
不能增加该对象到LDAP服务器。
不能增加该对象到LDAP服务器。
LDAP said: Invalid syntax
Error number: 0x15 (LDAP_INVALID_SYNTAX)
描述: An invalid attribute value was specified.
warn LDIF text import
Could not add object mail=chang_p@kwoks.cc,ou=Users,domainName=kwoks.cc,o=domains,dc=kwoks,dc=cc
LDAP said: Invalid syntax
Error number: 0x15 (LDAP_INVALID_SYNTAX)
描述: An invalid attribute value was specified.
有一个要注意的,对于超过70个字符的行,LDIF 里会自动换行并在换行的开头有一个空格表示续航。
你看看是否是你粘贴的时候将这个空格给去掉了。
是有空行的。我只是截取了。第一个帐号的内容给你看。
dn: mail=guo_jb@kwoks.cc,ou=Users,domainName=kwoks.cc,o=domains,dc=k
woks,dc=cc
将 "changetype: add" 这行去掉。
并且似乎 cn 属性会出错,不能有多字节字符。我看看是否可以修正。
cn这个应该是中文姓名。
你的意思是将ldif里面所有的"changetype: add" 删除是吧。然后尝试导入?
是的,删除 changetype: add。
刚才用 0.6.0 里的 create_mail_user_OpenLDAP.py 尝试导入一个,没有问题啊。用中文姓名也没问题。
请问是不是删除ldif文件里的changetype: add行,然后再通过phpldapadmin导入
测试之后发现
用windows 自带文件 工具 编辑后的txt 文件存成utf-8格式之后,再用create_mail..py生成ldif文件
这时第一个帐号转换成这样
dn:: bWFpbD1jaGFuZ19wQO+7v2lzY3JlYXRlLmNvbSxvdT1Vc2Vycyxkb21haW5OYW1lPe+7v2l
zY3JlYXRlLmNvbSxvPWRvbWFpbnMsZGM9aXNjcmVhdGUsZGM9Y29t
第二个帐号开始是正确的
dn: mail=guo_jb@kwoks.com,ou=Users,domainName=iscreate.com,o=domains,dc=i
screate,dc=com
---
版主说我的csv文件有问题.
但是,也没有检查出什么问题.
再试
解决的笨方法:
首先将csv文件存成utf-8格式 ,然后将其用create_mail_O.....py 转换成ldif文件
这里ldif文件首个帐号的
dn:部份为成dn:: 和一些乱码
mail:也是
storageBaseDirectory:
mailMessageStore:
homeDirectory:
memberOfGroup:
里面的都为乱码
这时候 将首个帐号的上面的乱码部份都改成和第二个帐号一样类型的字符 保存 就可以通过phpldapadmin导入.
虽然说管理员说是我的csv有问题.但是,我还是觉得create...py转换工具 有可能有问题.请检查.
你导入的时候密码是:78976734 为什么生成的ldif文件密码是19410919cp?
是不是生成文件的时候,参数修改错了?
建议先把汉字名字去掉试试,感觉这个东西可能和乱码有关系。
确实用英文名字是正确的。
但是 很奇怪的是,中文的csv文件,转换之后,就是第一个帐号的信息出错 后面的不会
感觉和你操作系统的字符编码有关系
我也发生这个错误了。csv文件绝对是utf8编码。但是只要最后一个字段是汉字。呵呵,生成的ldif条目就打不进去。是英文的,统统进去了。
感觉也是create那个py脚本的问题。没有处理好编码问题。
问题貌似出在最后一个group中,如果是汉字,那么就完蛋。是英文就没事。(在ldif中自动变为groupname@domain.com格式)
我测试过,用create的py脚本生成的ldif文件,用ultraedit查看,其中中文会变成乱码,但把这些乱码导入ldap后,在ldap中看到的中文是对的,不知为何。
iRedMail 开源邮件服务解决方案 » iRedMail 技术支持 » 关于批量导入生成的ldif文件不能导入的问题。
Powered by PunBB, supported by Informer Technologies, Inc.
Currently installed 3 official extensions. Copyright © 2003–2010 PunBB.
页面生成时间 0.011 秒, 共执行查询 70 条