pythonlap:如何修复b';ldapadd:无效格式(第1行)条目:“1”&引用\n';

pythonlap:如何修复b';ldapadd:无效格式(第1行)条目:“1”&引用\n';,python,testing,ldap,python-ldap,ldif,Python,Testing,Ldap,Python Ldap,Ldif,我想创建一个ldap测试服务器。因此,我使用ldapsearch转储了ldap数据,并创建了一个.ldif文件。现在,我想用此数据创建一个测试ldap服务器。我想使用frompythonlap import slapdtest with slapdtest.SlapdObject() as server: server.ldapadd("ldap_dump.ldif") server.start() 但我得到了错误信息: RuntimeError: ['

我想创建一个ldap测试服务器。因此,我使用
ldapsearch
转储了ldap数据,并创建了一个
.ldif
文件。现在,我想用此数据创建一个测试ldap服务器。我想使用from
pythonlap

import slapdtest

with slapdtest.SlapdObject() as server:

    server.ldapadd("ldap_dump.ldif")
    server.start()
但我得到了错误信息:

RuntimeError: ['/usr/bin/ldapadd', '-H', 'ldapi://../python-ldap-test-53974/ldapi', '-Y', 'EXTERNAL', '-Q', '-n'] process failed:
b''
b'ldapadd: invalid format (line 1) entry: ""\n'
$file ldap\u dump.ldif
返回
ldap\u dump.ldif:ASCII文本
。所以行尾实际上不应该是个问题

这是我的简化ldap_转储文件:

dn: cn=User,dc=institute.edu
sn: User
objectClass: top
objectClass: user
cn: User

导致错误的直接原因是
ldapadd
方法希望接收LDIF格式的内容,但您正在向其传递一个文件名。所以你想要更像:

with slapdtest.SlapdObject() as server:
    with open('ldap_dump.ldif') as fd:
      server.ldapadd(fd.read())

您似乎在
ldapadd
之后调用了
server.start()
,我想您需要按相反的顺序调用这些行


最后,示例文件可能无效,因为它没有定义更高级别的容器(例如,
dc=institute.edu
)来包含示例中描述的对象。

导致错误的直接原因是
ldapadd
方法希望接收LDIF格式的内容,但您正在向它传递一个文件名。所以你想要更像:

with slapdtest.SlapdObject() as server:
    with open('ldap_dump.ldif') as fd:
      server.ldapadd(fd.read())

您似乎在
ldapadd
之后调用了
server.start()
,我想您需要按相反的顺序调用这些行

最后,示例文件可能无效,因为它没有定义更高级别的容器(例如,
dc=institute.edu
)来包含示例中描述的对象