Как получить отличительное имя (DN) текущего хоста непосредственно в adedit?

Я знаю, как получить DN из командной строки:

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

Тем не менее, я хочу включить DN в скрипт adedit. Если я могу select_object {DN here}тогда я могу делать другие вещи, которые мне нужно сделать.

Я просто не знаю, как получить DN прямо в adedit,


Согласно adquery Страница man (часть Centrify Suite):

Команда adquery предназначена для обеспечения обратной совместимости, что позволяет запрашивать в Active Directory информацию о пользователях и группах из командной строки на компьютере, управляемом Centrify. Вы можете использовать эту команду для запроса информации для классических или иерархических зон. В большинстве случаев, однако, вы должны использовать команды или сценарии 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]

Опять же, полностью не проверено. Но я уверен, что это должно привести вас в правильном направлении.

Другие вопросы по тегам