Linux

如何在 adedit 中直接獲取目前主機的專有名稱(DN)?

  • May 26, 2018

我知道如何從命令行獲取 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 hostand的組合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]

再次,完全未經測試。但我很確定這應該讓你朝著正確的方向前進。

引用自:https://serverfault.com/questions/913867