2017-07-03 102 views
0

我有一个运行ldapsearch的bash脚本,除了指向有时不可用的DC外没有任何问题。如何在域名而不是特定主机上使用ldapsearch

该脚本使用-h(用于主机)选项指向特定的域控制器(DC)。我想指出域名,以便它在特定DC停止运行时仍能执行。

在我们的环境,我们必须下my.company.com 20 DC的。所以,我的ldapsearch查询使用第一DC的1号楼与下面的选项,它的工作原理:

-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

编辑:

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

的人的状态(用于ldap-utils包命令):

指定URI(S)指的是LDAP服务器(一个或多个);预期使用空格或逗号分隔的URI列表 ;只允许 协议/主机/端口字段。作为例外,如果没有指定主机/端口 ,但是DN是,则根据RFC 2782,DN用于使用DNS SRV记录来查找相应的主机.DN必须是非-empty的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 reccords可用

没有与你的语法没有问题。这是对ldapsearch做什么和LDAP是什么的误解。

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

这与我试图连接到端口443上的https://my.company.com并且它不起作用相同,但是当我在https://web01.my.company.com上执行时,它可以工作。

您需要在端口443上监听my.company.com并负载均衡/代理请求。

对于LDAP也是如此。

+0

感谢您的回应,我希望ldapsearch在其中实现了某种dns实现。 例如,当我打开powershell并在my.company.com上执行nslookup时,如果我在google.com(计算机IP列表)上执行此操作,则会得到相同的结果。我希望ldapsearch能够固有地解析域名并将列表结果作为数组用于连接。 我现在已经找到了一个备用解决方案。我使用逗号分隔的列表中所有20个域控制器的-H参数表现得非常好。 – scryptKiddy

+0

@scryptKiddy我编辑了我的答案。经过更多研究,我错了,可以在DNS SRV记录中查找。我相应地编辑了aswer。我的不好,我回答haslty – Esteban

+0

不用担心,并感谢后续,这是我一直在寻找,感谢您的解释呢! – scryptKiddy

相关问题