我知道如何从命令行获取 DN:
adquery user -D "$(hostname -s)"
但是,我想将 DN 放入 adedit 脚本中。如果可以select_object {DN here}
,那么我可以做我需要做的其他事情。
我只是不知道如何直接在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 标签的声誉。)
目前我没有任何 Centrify 主机可供测试。但我猜你正在寻找的是
get_adinfo host
and的组合get_objects
。get_adinfo host
将为您提供当前主机的信息或至少一个计算机名称(记忆模糊)。get_objects
更多的是一个通用的 LDAP 查询命令,它采用典型的 LDAP 参数,如深度、基数 (DN) 和过滤器。因此,一旦您有了计算机名称,就可以使用
get_objects
类似这样的方式查询 DN。再次,完全未经测试。但我很确定这应该让你朝着正确的方向前进。