Como obter o nome distinto (DN) do host atual diretamente no adedit?

1

Eu sei como obter o DN na linha de comando:

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

No entanto, quero colocar o DN em um script de adit. Se eu puder select_object {DN here} , então eu posso fazer as outras coisas que preciso fazer.

Eu simplesmente não sei como obter o DN diretamente em adedit .

De acordo com a página adquery man (parte do Centrify Suite):

The adquery command is provided for backward compatibility to enable you to query Active Directory for information about users and groups from the command line on a Centrify-managed computer. You can use this command to query information for classic or hierarchical zones. In most cases, however, you should use adedit commands or scripts to query Active Directory for information in hierarchical zones.

No entanto, não há documentação clara que eu possa encontrar sobre como traduzir os comandos adquery em chamadas nativas dentro de adedit .

Por exemplo:

adquery user 'hostname -s' --dump

Isso fornece uma lista de todos os atributos e valores brutos para o usuário que é o computador no qual estou executando o comando. Usando o sinalizador --attribute , posso retornar apenas um atributo.

Com adedit , depois de executar select_object THE_DN , posso obter outros campos, como "descrição", executando get_object_field description . Mas, como obter o DN em primeiro lugar?

Encontrei o guia do programador de anúncios , mas não consigo encontrar o que eu preciso lá apesar da extensa escavação e experimentação.

Até que eu tenha uma abordagem melhor, estou executando:

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

E depois no script:

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

set the_dn [lindex $argv 0]

bind ... (credentials here)

select_object $the_dn

(Nota: o adedit é construído sobre o Tcl, então eu marquei esta questão Tcl assim como o Active Directory. Eu não tenho a reputação de criar uma tag do Centrify.)

    
por Wildcard 26.05.2018 / 02:00

1 resposta

1

Eu não tenho nenhum host do Centrify para testar no momento. Mas acredito que o que você está procurando é uma combinação de get_adinfo host e get_objects .

get_adinfo host fornecerá as informações do host atual ou pelo menos um nome de computador (memória nebulosa).

get_objects a mais de um comando de consulta LDAP genérico que usa parâmetros LDAP típicos, como profundidade, base (DN) e filtro.

Portanto, assim que você tiver o nome do computador, poderá usar get_objects para consultar o DN assim.

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

Novamente, totalmente não testado. Mas tenho certeza que isso deve fazer você ir na direção certa.

    
por 26.05.2018 / 05:58