如何在域名而不是特定主机上使用ldapsearch

时间:2017-07-03 22:09:34

标签: bash ldap

我有一个bash脚本运行ldapsearch没有任何问题,除了它指向有时不可用的DC。

该脚本使用-h(用于主机)选项指向特定的域控制器(DC)。我想指向域名,以便在特定DC关闭的情况下它仍然会执行。

实施例

在我们的环境中,我们在my.company.com下有20个DC。所以我的ldapsearch查询使用了Bldg 1中的第一个DC,并使用了以下选项:

-H ldaps://bldg1dc01.my.company.com:636

如果bldg1dc01关闭,脚本将不会执行。因此,我想将脚本指向:

-H ldaps://my.company.com:636

但是当我这样做时,我得到了:

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

查询域名(my.company.com)而不是特定DC的语法是什么,即使DC已关闭,我的脚本也能正常工作?

1 个答案:

答案 0 :(得分:1)

编辑:

经过进一步的研究,我查看了ldapsearch命令,因为我不知道提供多个URI的可能性。

该人声明(对于ldap-utils包命令):

  

指定引用ldap服务器的URI;一个URI列表,   预期以空格或逗号分隔;只有   允许协议/主机/端口字段。作为例外,如果没有   指定了主机/端口,但DN是,DN用于查找   根据RFC,使用DNS SRV记录的相应主机   2782. DN必须是非空的AVA序列,其属性类型为" dc" (域组件),必须根据RFC 2396进行转义。

因此可以使用DNS结果制作ldapsearch

google.com的示例:

#  dig -t srv _ldaps._tcp.google.com +short
5 0 636 ldap.google.com.

因此,如果我使用(转义URI)进行搜索:

# ldapsearch -H ldaps:///dc%3Dgoogle%2Cdc%3Dcom -v
ldap_initialize( ldaps://ldap.google.com:636 )
^C

因此该命令可以查找DNS SRV记录

我的不好主张我认为是没有进一步研究的唯一方法

不相关,但如果没有可用的DNS记录,则可以使用这些信息

您的语法没有问题。这是对ldapsearch做什么以及LDAP是什么的误解。

LDAP是一种协议,ldapsearch命令是一个实现此协议的客户端。

与我尝试在端口https://my.company.com上连接到443并且它无法正常工作相同,但是当我在https://web01.my.company.com上执行时,它可以正常工作。< / p>

您需要在my.company.com上的端口443上侦听某些内容并对请求进行负载均衡/代理。

LDAP也是如此。