我希望从ldap获得本地网络中的所有PC,因此我尝试了以下(变体):
import ldap3
from ldap3 import ALL_ATTRIBUTES, SUBTREE, ALL
import dns.resolver
import socket
def get_ldap_server():
domain_name = socket.getfqdn().lstrip( socket.gethostname() )
answers = dns.resolver.query( '_ldap._tcp'+domain_name, rdtype='srv' )
#for srv in answers:
return answers[0].target.to_text()[:-1]
srv_name = get_ldap_server()
print srv_name
server = ldap3.Server( srv_name, get_info=ALL )
with ldap3.Connection( server ) as c:
print "Bound", c.bound
c.search( search_base='dc='+', dc='.join(srv_name.split('.')[1:]),
search_filter='(objectCategory=computer)',
search_scope=SUBTREE,
attributes=ALL_ATTRIBUTES,
get_operational_attributes=True)
print(c.response)但我得到的只有: LDAPOperationsErrorResult: LDAPOperationsErrorResult -1- operationsError - None - 000004DC: LdapErr: DSID-0C090748,注释:要执行此操作,必须在连接上完成成功的绑定。
尽管“约束”是“真实”。
我用的是python 2.7。任何帮助都将不胜感激!
发布于 2016-06-09 21:09:24
您没有在连接对象中提供任何用户名或密码,因此将执行匿名绑定。
尝试将username=xxx和password=yyy添加到"with“语句中的连接定义中。
https://stackoverflow.com/questions/37732180
复制相似问题