使用LDAP为用户查找交换服务器的DNS名称

继续我的最后一个问题 ,一旦我有正确的域控制器,我想获取给定用户的交换服务器。 我能够使用ldapsearch得到这个:

ldapsearch -LLL -h dc.example.com -D [email protected] -W -b "DC=example,DC=com"-s sub -x '(sAMAccountName=someuser)' msExchHomeServerName homeMTA homeMDB dn: CN=someuser,OU=Employees,OU=Users,DC=example,DC=com homeMTA: CN=Microsoft MTA,CN=EXCHANGESERVER,CN=Servers,CN=First Administrative Gr oup,CN=Administrative Groups,CN=My Company,CN=Microsoft Exchange,CN=Servic es,CN=Configuration,DC=example,DC=com homeMDB: CN=Database 1,CN=Storage Group 1,CN=InformationStore,CN=EXCHANGESERVER,C N=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=My Company, CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=example,DC=com msExchHomeServerName: /o=My Company/ou=First Administrative Group/cn=Config uration/cn=Servers/cn=EXCHANGESERVER 

我想将上面的DN(两种完全不同的格式)转换成DNS名称。 在这种情况下,他们都应该被翻译成exchangeserver.example.com。

或者,有没有更简单的方法来获取这些信息? 在我最常见的情况下,查询的用户是我们感兴趣的用户,所以我的理想是unix用户可以问“我的交换服务器的FQDN是什么? 而不需要将unix机器join到AD域中。

编辑:我以为我find了一个解决scheme,但实际上并没有工作:

 ldapsearch -x -LLL -h dc.cisco.com -D [email protected] -W -s base -b "CN=Microsoft MTA,CN=EXCHANGESERVER,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=My Company,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=example,DC=com" dnsHostName 

这是非常接近的,但是你必须知道去掉-b属性的前面的“CN = Microsoft MTA”,这不适用于编程工作。

假设您可以阅读VBScript,这里有一个指向Microsoft脚本的链接, 显示如何find用户帐户的邮箱位置 。

该脚本正在查询用户的“homeMDB”属性(以获取持有用户邮箱的邮箱数据库的DN)。 然后,他们使用MDB的“msExchOwningServer”属性的值来查询该MDB,以find“拥有”MDB的服务器对象的DN(顺便说一句,您可以忽略关于存储组的位,因为你不在乎)。

假设您需要DNS名称,请查询服务器对象的“networkAddress”属性(通过查询用户的“homeMDB”的DN返回的MDB对象的“msExchOwningServer”属性中指定的属性),并获取以“nacn_ip_tcp”。 这会给你承载该MDB的服务器的FQDN。

编辑:

我并不是想暗示你需要执行VBScript,只是告诉你用ldapsearch查询什么。 同样,当我说“服务器对象”时,我并不是想暗示你将会实例化某种VBScript对象,只是要查询为服务器命名的DN。

因此,假设我想要为用户Bob托pipe邮箱的服务器的DNS名称,我将在域的根目录(或全局目录的根目录)中使用LDAPsearch筛选器“(sAMAccountName = Bob)”进行查询,如果我想要search森林中的所有域)作为Bob的“homeMDB”属性。

 ldapsearch -h ad.example.com -D [email protected] -W -b "DC=ad,DC=example,DC=com" -s sub -x "(sAMAccountName=Bob)" homeMDB 

这将返回homeMDB属性:

 homeMDB: CN=Mailbox Store (EXCH-SRV),CN=First Storage Group,CN=InformationStore,CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com 

然后,使用该homeMDB属性作为基准DN,查询“msExchOwningServer”:

 ldapsearch -h ad.example.com -D [email protected] -W -b "CN=Mailbox Store (EXCH-SRV),CN=First Storage Group,CN=InformationStore,CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com" msExchOwningServer 

这将返回托pipe该邮箱数据库的服务器的DN:

 msExchOwningServer: CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com 

最后,使用服务器的DN作为基准DN,查询“networkAddress”属性:

 ldapsearch -h ad.example.com -D [email protected] -W -b "CN=EXCH-SRV,CN=Servers,CN=EXAMPLE,CN=Administrative Groups,CN=Example Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,DC=example,DC=com" networkAddress 

这将返回所有您感兴趣的networking地址,以“nacn_ip_tcp”开头。

 networkAddress: ncacn_vns_spp:EXCH-SRV networkAddress: netbios:EXCH-SRV networkAddress: ncacn_np:EXCH-SRV networkAddress: ncacn_spx:EXCH-SRV networkAddress: ncacn_ip_tcp:EXCH-SRV.ad.example.com networkAddress: ncalrpc:EXCH-SRV 

您可以对“homeMTA”属性执行相同的操作,但在查询“homeMTA”属性中指定的DN时,您将search“msExchResponsibleMTAServerBL”而不是“msExchOwningServer”。

最后,如果您想放弃所有这些,请查询用户“m​​sExchHomeServerName”属性。

 msExchHomeServerName: /o=Example Organization/ou=EXAMPLE/cn=Configuration/cn=Servers/cn=EXCH-SRV 

获取返回的值,并将其用作“legacyExchangeDN”属性上的筛选筛选器,并在目录的Exchange相关子树中search“networkAddress”属性。

 ldapsearch -h ad.example.com -D [email protected] -W -b "CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ad,dc=example,dc=com" -x "(legacyExchangeDN=/o=Example Organization/ou=EXAMPLE/cn=Configuration/cn=Servers/cn=EXCH-SRV)" networkAddress 

你将得到与上面相同的networking地址。