我有一个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已关闭,我的脚本也能正常工作?
答案 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也是如此。