6

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

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

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

4

3 回答 3

9

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

于 2013-05-28T19:08:50.027 回答
3

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'无法解决的。

于 2013-05-29T18:45:32.073 回答
1

结束这个问题的循环,由https://www.openldap.org/lists/openldap-software/200503/msg00520.html提供

当您知道条目的 DN 时,无需全部“搜索”,直接检索条目即可: ldapsearch -x -LLL -b "uid=droy,ou=people,dc=eclipse,dc=org "

所以这回答了“你如何使用 ldapsearch 来查找()一个项目而不是搜索它”

于 2021-08-09T17:57:31.763 回答