你如何在ldap中搜索dn

时间:2013-05-28 19:00:13

标签: perl active-directory ldap

我从ldap中提取有关用户的信息。这包括directReports,它是完整的“CN = cnBlah,OU = ouBlah,DC = dcBlah”形式。我正在尝试进行另一次查找以查找有关该报告者的信息。

到目前为止,我能够真正找到所述用户的唯一方法是打破CN =并将字符串的剩余部分设置为基础。

这是正确的做法吗?或者有没有办法在给定完整的dn的情况下搜索条目?

3 个答案:

答案 0 :(得分:5)

在搜索中使用DN作为基础对象,并将搜索范围设置为base

有关信息,请参阅Using ldapsearch

答案 1 :(得分:1)

使用ldapsearch选项调用-f可以完成您想要的任务。

将您的第一个搜索结果保存到一个文件中,只包含cn属性的。例如,您的文件将如下所示:

user1
user2
cnBlah
john
jim
user883

然后使用足够高的基础调用ldapsearch以包含所有用户。这可能是-b dc=users,dc=example,dc=com

因此,如果您将用户列表保存到名为users.txt的文件中,那么您的ldapsearch命令行将如下所示:

#I removed the hostname, port and authentification for clarity
ldapsearch -b "dc=users,dc=example,dc=com" -s sub "cn=%s" -f users.txt -LLL

长行将包裹〜76个字符。通过perl -p00e 's/\r?\n //g'的管道无法修复。

答案 2 :(得分:-1)

如果您已经拥有完整的DN,则根本不需要进行搜索。只需进行查找操作。