【问题标题】:ldapsearch - Only return if value has both attributesldapsearch - 仅当值具有两个属性时才返回
【发布时间】:2021-02-18 21:52:55
【问题描述】:

我正在像这样使用 ldapsearch:

ldapsearch -Y GSSAPI ... '(&(objectClass=person)(employeeID=1*))' employeeID mail

基本上我想返回员工 ID 和邮件地址,但前提是员工同时拥有这两者。例如,如果某人只有一个employeeID 但没有邮件,则不应将他们包含在结果集中。在上面的命令中,它们仍然被返回。如何限制它,以便必须满足两个请求的属性?

【问题讨论】:

    标签: ldap ldap-query


    【解决方案1】:

    在过滤器中使用通配符 -- mail=* 表示邮件具有任何值的记录。您的示例中的特定过滤器已修改为返回设置了 mail 和 employeeID 属性的记录:

    (&(objectClass=person)(employeeID=1*)(mail=*)(employeeID=*))
    

    【讨论】:

    • 为什么是(employeeID=*)
    • 主要是为了清楚起见——要说我想查找属性 X 和 Y 都具有值的帐户,请使用过滤器 (&(X=*)(Y=*))。在这种特殊情况下,它对employeeID = 1 * 是多余的......但我通常将我的查询范围限定为用于测试(找到包括我自己的一组帐户),然后删除额外的过滤器组件以进行“真实”运行.如果意图是通过搜索employeeid=2*、employeeid=3* 等来模拟分页查询...则无需添加employeeid=*。
    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多