python-ldap:如何修复 b'ldapadd:格式无效(第 1 行)条目:“”\n'
python-ldap: How to fix b'ldapadd: invalid format (line 1) entry: ""\n'
我想创建一个 ldap 测试服务器。所以我用 ldapsearch
转储了 ldap 数据并创建了一个 .ldif
文件现在我想用这个数据创建一个测试 ldap 服务器。我想使用 python-ldap
中的 slapdtest
-module。
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_dump.ldif
returnsldap_dump.ldif: ASCII text
。所以行尾实际上应该不是问题。
这是我缩小的 ldap_dump 文件:
dn: cn=User,dc=institute.edu
sn: User
objectClass: top
objectClass: user
cn: User
您的错误的直接原因是 ldapadd
方法期望接收 LDIF-format 内容,但您传递给它的是文件名。所以你想要更像的东西:
with slapdtest.SlapdObject() as server:
with open('ldap_dump.ldif') as fd:
server.ldapadd(fd.read())
您似乎在 server.start()
ldapadd
之后调用,我认为您需要以相反的顺序调用这些行。
最后,您的示例文件可能无效,因为它没有定义 higher-level 容器(例如 dc=institute.edu
)来包含示例中描述的对象。
我想创建一个 ldap 测试服务器。所以我用 ldapsearch
转储了 ldap 数据并创建了一个 .ldif
文件现在我想用这个数据创建一个测试 ldap 服务器。我想使用 python-ldap
中的 slapdtest
-module。
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_dump.ldif
returnsldap_dump.ldif: ASCII text
。所以行尾实际上应该不是问题。
这是我缩小的 ldap_dump 文件:
dn: cn=User,dc=institute.edu
sn: User
objectClass: top
objectClass: user
cn: User
您的错误的直接原因是 ldapadd
方法期望接收 LDIF-format 内容,但您传递给它的是文件名。所以你想要更像的东西:
with slapdtest.SlapdObject() as server:
with open('ldap_dump.ldif') as fd:
server.ldapadd(fd.read())
您似乎在 server.start()
ldapadd
之后调用,我认为您需要以相反的顺序调用这些行。
最后,您的示例文件可能无效,因为它没有定义 higher-level 容器(例如 dc=institute.edu
)来包含示例中描述的对象。