如何在 adedit 中直接獲取目前主機的專有名稱(DN)?
我知道如何從命令行獲取 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。set results [get_objects -depth sub "DC=example,DC=com" "(&(objectClass=computer)(sAMAccountName=$hostname))"] set compDN [lindex $results 0]
再次,完全未經測試。但我很確定這應該讓你朝著正確的方向前進。