コマンドラインからDNを取得する方法を知っています。
adquery user -D "$(hostname -s)"
ただし、DNをadeditスクリプトに組み込みたいと思います。 select_object {DN here}
ができれば、他に必要なことができます。
DNをadedit
で直接取得する方法がわかりません。
adquery
のマニュアルページ(Centrify Suiteの一部)によると:
Adqueryコマンドは、下位互換性のために提供されており、Centrifyが管理するコンピューターのコマンドラインからユーザーとグループに関する情報をActiveDirectoryに照会できるようにします。このコマンドを使用して、クラシックゾーンまたは階層ゾーンの情報を照会できます。ただし、ほとんどの場合、adeditコマンドまたはスクリプトを使用して、階層ゾーンの情報をActiveDirectoryに照会する必要があります。
ただし、adquery
コマンドをadedit
内のネイティブ呼び出しに変換する方法について見つけることができる明確なドキュメントはありません。
例えば:
adquery user `hostname -s` --dump
これにより、コマンドを実行しているコンピューターであるユーザーのすべての生の属性と値のリストが表示されます。 --attribute
フラグを使用すると、1つの属性のみを返すことができます。
adedit
を使用すると、select_object THE_DN
を実行した後、get_object_field description
を実行することで「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に基づいて構築されているため、この質問にActive Directoryと同様にTclのタグを付けました。Centrifyタグを作成するという評判はありません。)
現在、テストするCentrifyホストはありません。しかし、あなたが探しているのはget_adinfo Host
とget_objects
の組み合わせだと思います。
get_adinfo Host
は、現在のホストの情報または少なくともコンピュータ名(メモリがかすんでいる)を提供します。
get_objects
深度、ベース(DN)、フィルターなどの一般的なLDAPパラメーターを使用する一般的なLDAPクエリコマンドの詳細。
したがって、コンピューター名を取得したら、get_objects
を使用してDNに次のようなクエリを実行できます。
set results [get_objects -depth sub "DC=example,DC=com" "(&(objectClass=computer)(sAMAccountName=$hostname))"]
set compDN [lindex $results 0]
繰り返しますが、完全にテストされていません。しかし、これであなたは正しい方向に進むはずだと私は確信しています。