如何在 adedit 中直接获取当前主机的专有名称 (DN)?

如何在 adedit 中直接获取当前主机的专有名称 (DN)?

我知道如何从命令行获取 DN:

adquery user -D "$(hostname -s)"

但是,我想将 DN 放入 adedit 脚本中。如果可以select_object {DN here},那么我就可以做其他需要做的事情了。

我只是不知道如何直接获取 DN adedit


根据adquery手册页(Centrify Suite 的一部分):

adquery 命令是为了向后兼容而提供的,它使您可以从 Centrify 管理的计算机上的命令行查询 Active Directory 以获取有关用户和组的信息。您可以使用此命令查询经典或分层区域的信息。但是,在大多数情况下,您应该使用 adedit 命令或脚本查询 Active Directory 以获取分层区域中的信息。

但是,我找不到关于如何将adquery命令转换为内部本机调用的清晰文档adedit

例如:

adquery user `hostname -s` --dump

这将列出运行命令的计算机用户的所有原始属性和值。使用标志--attribute,我可以仅返回一个属性。

使用adedit,运行 之后select_object THE_DN,我可以通过运行 来获取其他字段,例如“描述” get_object_field description。但是,首先如何获取 DN?

我发现adedit 程序员指南,但尽管进行了大量的挖掘和实验,还是找不到我需要的东西。


在我找到更好的方法之前,我正在运行:

adedit myscript "$(adquery user -D "$(hostname -s)")"

然后在脚本中:

if { $argc != 1 } {
  puts "format: $argv0 hostDN"
  exit 1
}

set the_dn [lindex $argv 0]

bind ... (credentials here)

select_object $the_dn

(注意:adedit 是基于 Tcl 构建的,因此我将这个问题标记为 Tcl 以及 Active Directory。我没有创建 Centrify 标签的声誉。)

答案1

我目前没有任何 Centrify 主机可供测试。但我猜你要找的是get_adinfo host和的组合get_objects

get_adinfo host将为您提供当前主机的信息或至少一个计算机名称(记忆模糊)。

get_objects更像是一个通用的 LDAP 查询命令,它采用典型的 LDAP 参数,如深度、基础(DN)和过滤器。

因此,一旦您有了计算机名称,您就可以使用get_objects类似这样的方法来查询 DN。

set results [get_objects -depth sub "DC=example,DC=com" "(&(objectClass=computer)(sAMAccountName=$hostname))"]
set compDN [lindex $results 0]

再次强调,完全没有经过测试。但我确信这应该能让你走上正确的方向。

相关内容