使用 ldapsearch 时如何排除特定属性?

使用 ldapsearch 时如何排除特定属性?

我知道如何使用 ldapsearch 请求特定属性(通过在 cli 调用结束时传递它们):

ldapsearch -x -D "..." -b "..." sn cn displayName

现在,我如何才能仅指定那些我不需要的特定属性?我目前请求所有属性并“grep 掉”那些我不想要/不需要的属性:

ldapsearch -x -D "..." -b "..." | grep -v mail

有没有更优雅的方式来做到这一点?我的意思是,除了创建一个没有这些属性的 ACL 的用户 ;-)。

短暂性脑缺血发作

答案1

我不知道有什么优雅的方法,但你可以采用两步方法来完成。

在第一列,使用-A选项仅获取属性名称。从列表中删除您不关心的属性。

在以下调用中,使用该列表。例如:

cols=$(ldapsearch -A (...) | tail -n +2 | grep -v "jpegPhoto\|thumbnailPhoto" | tr -d '\n' | sed 's/:/ /g')
ldapsearch (...) $cols

答案2

尽管它可能提供你想要的东西,但请考虑一下这是一个令人讨厌的黑客行为

ldapsearch ... | grep -v '^\s'

这是基于ldapsearch 2.4.28OSX 的输出,并与每个-L输出选项(包括无)一起使用。

这里的关键是,大条目在下一行以一个前导空格继续,因此我们排除以一个前导空格结尾的行。

相关内容