Python-Ldap 库。导入 LDIF
Python-Ldap lib. Import LDIF
是否可以像这样导入 LDIF
dn: cn=vpupkin,cn=people,ou=company,dc=domain,dc=com
c: UA
cn: vpupkin
employeetype: Indoor Front-end developer
gidnumber: 500
givenname: Vasya
homedirectory: /home/vpupkin
host: example.com
l: Kyiv
loginshell: /bin/bash
mail: vpupkin@domain.com
o: Microsoft
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
objectclass: shadowAccount
objectclass: ldapPublicKey
objectclass: extensibleObject
labeleduri: skype://test
sn: Pupkin
sshpublickey: ssh-rsa key
st: Trudova, 15
telephonenumber: 7777777777
uid: vpupkin
uidnumber: 1000
userpassword: {SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
使用 python-ldap 库 (http://www.python-ldap.org/)?
是的,我可以通过这种方式向 LDAP 添加新记录http://www.grotan.com/ldap/python-ldap-samples.html#add,但我不确定这种文本 ldif 文件。
PS。完整答案在这里 http://pastebin.com/eQU7xBfj
python-ldap 包含一个 LDIF Parser module。使用它来解析 LDIF 并将生成的字典提交给 ldap_connection.add_s()
.
用法示例:
from StringIO import StringIO
import ldif
from ldap import modlist
ldif_file = StringIO("""dn: cn=vpupkin,cn=people,ou=company,dc=domain,dc=com
c: UA
cn: vpupkin
""")
parser = ldif.LDIFRecordList(ldif_file)
parser.parse()
for dn, entry in parser.all_records:
add_modlist = modlist.addModlist(entry)
ldap_conn.add_s(dn, add_modlist)
您也可以试试下面的方法:
class MyLDIF(ldif.LDIFParser):
def __init__(self, input):
ldif.LDIFParser.__init__(self,input)
def handle(self,dn,entry):
ldif = modlist.addModlist(entry)
l = ldap.open('localhost', 389)
try:
l.bind("cn=Manager,dc=exapmle,dc=org", "Secret123")
except ldap.SERVER_DOWN, e:
print "ldap server is down"
else:
l.add_s(dn, ldif)
def enable_schema():
parser = MyLDIF(open('/tmp/a1.ldif', 'rb'))
parser.parse()
我使用 python-ldap docs
中给出的示例导出了上述解决方案
是否可以像这样导入 LDIF
dn: cn=vpupkin,cn=people,ou=company,dc=domain,dc=com
c: UA
cn: vpupkin
employeetype: Indoor Front-end developer
gidnumber: 500
givenname: Vasya
homedirectory: /home/vpupkin
host: example.com
l: Kyiv
loginshell: /bin/bash
mail: vpupkin@domain.com
o: Microsoft
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
objectclass: shadowAccount
objectclass: ldapPublicKey
objectclass: extensibleObject
labeleduri: skype://test
sn: Pupkin
sshpublickey: ssh-rsa key
st: Trudova, 15
telephonenumber: 7777777777
uid: vpupkin
uidnumber: 1000
userpassword: {SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
使用 python-ldap 库 (http://www.python-ldap.org/)?
是的,我可以通过这种方式向 LDAP 添加新记录http://www.grotan.com/ldap/python-ldap-samples.html#add,但我不确定这种文本 ldif 文件。
PS。完整答案在这里 http://pastebin.com/eQU7xBfj
python-ldap 包含一个 LDIF Parser module。使用它来解析 LDIF 并将生成的字典提交给 ldap_connection.add_s()
.
用法示例:
from StringIO import StringIO
import ldif
from ldap import modlist
ldif_file = StringIO("""dn: cn=vpupkin,cn=people,ou=company,dc=domain,dc=com
c: UA
cn: vpupkin
""")
parser = ldif.LDIFRecordList(ldif_file)
parser.parse()
for dn, entry in parser.all_records:
add_modlist = modlist.addModlist(entry)
ldap_conn.add_s(dn, add_modlist)
您也可以试试下面的方法:
class MyLDIF(ldif.LDIFParser):
def __init__(self, input):
ldif.LDIFParser.__init__(self,input)
def handle(self,dn,entry):
ldif = modlist.addModlist(entry)
l = ldap.open('localhost', 389)
try:
l.bind("cn=Manager,dc=exapmle,dc=org", "Secret123")
except ldap.SERVER_DOWN, e:
print "ldap server is down"
else:
l.add_s(dn, ldif)
def enable_schema():
parser = MyLDIF(open('/tmp/a1.ldif', 'rb'))
parser.parse()
我使用 python-ldap docs
中给出的示例导出了上述解决方案