付録A Directory Server で利用可能なスクリプトのテスト
Red Hat Directory Server には、ストレスや負荷の異なる条件で Directory Server のパフォーマンスを テスト するために使用できるスクリプトが 2 つ用意されています。テストスクリプトは各種環境をシミュレートします。これにより、管理者は設定やマシンの変更を実稼働環境に配置する前に評価できます。
ldclt
および rsearch
はどちらも /usr/bin
ディレクトリーにあります。
A.1. ldclt (負荷ストレステスト)
LDAP クライアントスクリプト (ldclt
) は、Directory Server のロードテストを行うために、ユーザー定義のシナリオで、サーバーへの複数のクライアント接続を確立します。クライアント操作には、ディレクトリーの追加、検索、変更、modRDN、削除、LDIF ファイルの生成などの設定操作が含まれます。操作は、ディレクトリーのより現実的な使用環境をシミュレートするために、ランダムなユーザーとしてバインディングとバインディング解除を行い、ランダムなタスクを実行して、操作をランダムに行うことができます。
ldclt
ツールは、Directory Server のパフォーマンスを測定するために、継続的に繰り返し実行される操作の完了時間を測定します。複数のスレッドを使用すると、負荷の高い状態でパフォーマンスをテストできます。各テストは、同じタイプの LDAP 操作を実行しますが、異なる設定 (ユーザーの認証情報が異なる、属性タイプやサイズが異なる、ターゲットサブツリーが異なる等) を使用します。
LDAP 操作変数の定義に加えて、管理者はサーバーに特定の負荷を設定するために、スレッドのパフォーマンスを制御できます。
ldclt
ツールは、特に自動テストに使用することが意図されているため、複雑なテスト操作に対しても、オプションは広範囲で柔軟で簡単にスクリプト化されます。
ldclt
は負荷テストであるため、大量のシステムリソースを使用することに注意してください。このツールは、最低 8MB のメモリーを使用します。スレッドの数、操作のタイプ、およびその他の設定によっては、より多くのメモリーを使用する場合があります。
操作のタイプと、それらの操作に使用されるディレクトリーデータに応じて、ldclt
は独自のリソース制限を設定する可能性があります。システムリソース制限の管理の詳細は、ulimit
および getrlimit
の man ページを参照してください。
ldclt
ユーティリティーは、/usr/bin
ディレクトリーにあります。
A.1.1. 構文
ldlt
-q-Q-v-V-Emax_errors-bbase_DN-hhost-pport-ttimeout-Dbind_DN-wpassword-oSASL_options-eexecution_params-amax_pending-nnumber_of_threads-iinactivity_times-Nnumber_of_samples-Ierror_code-Ttotal_number_of_operations-rlow_range-Rhigh_range-ffilter-sscope-Sconsumer-Psupplier_port-Wwait_time-Zcertificate_file
A.1.2. ldclt オプション
オプション | 説明 |
---|---|
-a max_pending_ops | 定義された最大保留操作数で、ツールを非同期モードで実行します。 |
-b base_dn |
LDAP 操作テストの実行に使用するベース DN を指定します。指定しないと、デフォルト値は |
-D bind_dn |
サーバーへの接続に使用する |
-E max_errors | ツールの終了までに、テスト LDAP 操作で許容されるエラー発生の最大数を設定します。デフォルトは 1000 です。 |
-e execution_params |
テストに使用する操作のタイプおよび他のテスト環境パラメーターを指定します。 |
-f filter | 検索テストに使用する LDAP 検索フィルターを指定します。 |
-h |
テストを実行する Directory Server のホスト名または IP アドレスを指定します。ホストが指定されていない場合、 |
-I error_code |
特定のレスポンスコードにマッチするエラーが発生した場合に無視するように |
-i inactivity_times | 終了するまでにツールが非アクティブでいられる間隔を設定します。デフォルトでは、この設定は 3 で、これは 30 秒 (各操作の間隔が 10 秒) と解釈されます。 |
-N number_of_samples | 実行する反復回数を設定します (10 秒間のテストを実行する回数)。デフォルトでは、この設定は無制限で、ツールは手動で停止した場合にのみ終了します。 |
-n number_of_threads | 操作に対して同時に実行するスレッドの数を設定します。デフォルト値は 10 です。 |
-o SASL_option |
SASL を使用してサーバーに接続するようにツールに指示し、使用する SASL メカニズムを指定します。形式は * mech: SASL 認証メカニズム * authid: サーバーにバインドしているユーザー (Kerberos プリンシパル) * authzid: プロキシー認可 (プロキシー認可はサポートされていないため、サーバーによって無視されます) * secProp: セキュリティープロパティー * realm: Kerberos レルム * flags
想定される値は、サポートされるメカニズムによって異なります。 [literal,subs="+quotes,verbatim"] …. -o "mech=DIGEST-MD5" -o "authzid=test_user" -o "authid=test_user" …. |
-P supplier_port | レプリケーションテストのためにサプライヤーサーバーに接続するのに使用するポートを指定します。指定されていない場合のデフォルトは 16000 です。 |
-p port | テストしている Directory Server インスタンスのサーバーポート番号を指定します。 |
-Q |
ツールをスーパー quiet モードで実行します。これは、 |
-q | ツールを quiet モードで実行します。 |
-R number | 範囲の上限の数値を設定します。 |
-r number | 範囲の下限の数値を設定します。 |
-S consumer_name | レプリケーションテストを実行するために接続するコンシューマーサーバーのホスト名を指定します。 |
-s scope |
検索条件を指定します。 |
-T ops_per_thread | 1 スレッドで許容される最大操作数を設定します。 |
-t timeout | LDAP 操作のタイムアウト期間を設定します。デフォルトは 30 秒です。 |
-V | ツールを高冗長モードで実行します。 |
-v | ツールを冗長モードで実行します。 |
-W wait_time |
1 つの操作の終了後に次の操作を開始するまで |
-w password |
テストのために Directory Server にバインドする際に、 |
-Z /path/to/cert.db | テスト接続用に TLS を有効にし、証明書データベースとして使用するファイルを参照します。 |
-e
オプションは、ldclt
テスト操作の実行パラメーターを設定します。複数のパラメーターをコンマ区切りリストで設定できます。以下に例を示します。
-e add,bindeach,genldif=/var/lib/dirsrv/slapd-instance/ldif/generated.ldif,inetOrgPerson
パラメーター | 説明 |
---|---|
abandon | 非同期検索リクエストについて破棄操作を開始します。 |
add |
ディレクトリーにエントリーを追加します ( |
append |
|
ascii | ASCII 7 ビットの文字列を生成します。 |
attreplace=name:mask | 既存のエントリーの属性 (name) を置き換える変更操作を実行します。 |
attrlist=name:name:name | 検索操作で返す属性のリストを指定します。 |
attrsonly=# | 検索操作で使用して、属性値を読み取るかどうかを設定します。設定できる値は 0 (値を読み取る) または 1(値を読み取らない) です。 |
bindeach |
|
bindonly |
|
close | バインド解除操作を実行するのではなく、接続を終了するようにツールに指示します。 |
cltcertname=name | TLS 接続に使用する TLS クライアント証明書の名前を指定します。 |
commoncounter |
|
counteach | ツールに対し、成功した操作だけでなく、各操作をカウントするように指示します。 |
delete | 削除操作を開始します。 |
deref |
検索操作 ( |
dontsleeponserverdown | サーバーが停止すると、ツールのループが非常に高速になります。 |
emailPerson |
これにより、 |
esearch | 完全一致の検索を実行します。 |
genldif=filename | 操作で使用する LDIF ファイルを生成します。 |
imagesdir=path | テストで使用するイメージの場所を指定します。 |
incr | 増分値を有効にします。 |
inetOrgPerson |
これにより、 |
keydbfile=file | TLS 接続で使用するキーデータベースのパスおよびファイル名を含めます。 |
keydbpin=password | キーデータベースにアクセスするためのトークンパスワードを含めます。 |
noglobalstats | 定期的なグローバル統計値を 出力しない ようにツールに指示します。 |
noloop | 増分数をループしません。 |
object=filename | 入力ファイルからエントリーオブジェクトを作成します。 |
person |
これにより、 |
random |
|
randomattrlist=name:name:name |
|
randombase |
|
randombaselow=value | 乱数ジェネレーターの低い値を設定します。 |
randombasehigh=value | 乱数ジェネレーターの高い値を設定します。 |
randombinddn |
|
randombinddnfromfile=file |
|
randombinddnlow=value | 乱数ジェネレーターの低い値を設定します。 |
randombinddnhigh=value | 乱数ジェネレーターの高い値を設定します。 |
rdn=attrname:value |
検索フィルターとして使用する RDN を提供します。これは、 |
referral=value | 操作の参照動作を設定します。on (参照を許可する)、off (参照を許可しない)、または rebind(再度接続を試みる) の 3 つのオプションを選択できます。 |
smoothshutdown |
|
string |
|
v2 |
テスト操作に LDAPv2 を使用するように |
withnewparent | modRDN 操作を実行し、エントリーの名前を引数として設定した newparent に変更します。 |
randomauthid | ランダムな SASL 認証 ID を使用します。 |
randomauthidlow=value | ランダムな SASL 認証 ID の下限値を設定します。 |
randomauthidhigh=value | ランダムな SASL 認証 ID の上限値を設定します。 |
A.1.3. ldclt の結果
ldclt
は、指定された数のスレッドで、指定したあらゆる操作を継続的に実行します。デフォルトでは、10 秒間隔でパフォーマンスの統計値を画面に出力します。
結果には、1 スレッドあたりおよび 1 秒あたりの平均操作数と、次にその 10 秒間のウィンドウで実行された操作の合計数が示されます。
ldclt[process_id] Average rate: number_of_ops/thr (number_of_ops/sec), total: total_number_of_ops
以下に例を示します。
ldclt[22774]: Average rate: 10298.20/thr (15447.30/sec), total: 154473
ldclt
は、15 分ごとおよびツールの終了時に、累積の平均と合計を出力します。
ldclt[22774]: Global average rate: 821203.00/thr (16424.06/sec), total: 12318045 ldclt[22774]: Global number times "no activity" reports: never ldclt[22774]: Global no error occurs during this session. Catch SIGINT - exit... ldclt[22774]: Ending at Wed Feb 24 18:39:38 2010 ldclt[22774]: Exit status 0 - No problem during execution.
一部の操作 (adds など) や、-v
や -V
などの詳細出力オプションを使用して、追加のデータを画面に出力します。情報の種類は操作のタイプによって異なりますが、通常、操作を実行するスレッドと、操作によって呼び出されるプラグインが表示されます。以下に例を示します。
ldclt -b ou=people,dc=example,dc=com -D "cn=Directory Manager" -w secret12 -e add,person,incr,noloop,commoncounter -r90000 -R99999 -f "cn=testXXXXX" -V ... ldclt[11176]: T002: After ldap_simple_bind_s (cn=Directory Manager, secret12) ldclt[11176]: T002: incremental mode:filter="cn=test00009" ldclt[11176]: T002: tttctx->bufFilter="cn=test00009" ldclt[11176]: T002: attrs[0]=("objectclass" , "person") ldclt[11176]: T002: attrs[1]=("cn" , "test00009") ldclt[11176]: T002: attrs[2]=("sn" , "toto sn") ... ldclt[11176]: Average rate: 195.00/thr ( 195.00/sec), total: 1950 ldclt[10627]: Global average rate: 238.80/thr (238.80/sec), total: 2388 ldclt[10627]: Global number times "no activity" reports: never ldclt[10627]: Global no error occurs during this session. Catch SIGINT - exit... ldclt[10627]: Ending at Tue Feb 23 11:46:04 2010 ldclt[10627]: Exit status 0 - No problem during execution.
ほとんどのエラーは、テストを中断せずに ldclt
により処理されます。発生した致命的なエラーはツールの終了ステータスでリスト表示され、累積合計で返されます。
Global no error occurs during this session.
発生した LDAP 操作エラーはスレッド内で処理されます。接続エラーは、テスト全体に影響を与えることなくスレッドを強制終了します。ldclt
ユーティリティーは、各 LDAP エラーが発生する回数をカウントします。記録されるエラーの合計数が 1000(デフォルト) を超える場合、スクリプト自体はエラーになります。
ldclt
が LDAP エラーに応答する方法を設定できます。-E
オプションを使用して、LDAP エラーの発生後にスクリプトがエラーになる際のしきい値に異なる値を設定します。-I
オプションを使用して、全スレッドで指定された LDAP エラーコードを無視するようにスクリプトに指示します。エラーによる終了の上限値を変更し、特定のエラーコードを無視することで、テストスクリプトまたはテスト設定を調整したり、改善したりできます。
A.1.4. ldclt の終了および ldclt 終了コード
ldclt
コマンドは無期限に実行されます。このスクリプトは、致命的なランタイムや初期化エラーが発生した、LDAP エラーの上限値に達した、すべてのスレッドの機能が停止した、または操作や時間の制限に達したなど、さまざまな状況で自身を停止できます。
実行の統計値は、スクリプトが終了するか、ユーザーがスクリプトを終了するのいずれかによってコマンドが完了するまで表示されません。ldclt
スクリプトを中断する方法は 2 つあります。
-
Ctrl+バックスラッシュ (kbd:[^\]) キーを押すか、
kill -3
コマンドを実行すると、スクリプトを終了せずに現在の統計値を表示します。 -
Ctrl+C (^C) キーを押すか、
kill -2
コマンドを実行すると、スクリプトを終了してグローバル統計値を出力します。
ldclt
スクリプトが終了するか、中断されると、統計値およびエラー情報と共に終了コードが返されます。
終了コード | 説明 |
---|---|
0 | 成功 (エラーなし)。 |
1 | 操作で深刻な致命的なエラーが発生した。 |
2 | ツールで渡されたパラメーターにエラーがあった。 |
3 | ツールが LDAP エラー数の上限に達した。 |
4 | このツールが Directory Server インスタンスにバインドできなかった。 |
5 | このツールが TLS 経由で接続するための TLS ライブラリーを読み込むことができなかった。 |
6 | マルチスレッド (mutex) エラーが発生しました。 |
7 | 初期化に問題があった。 |
8 | このツールが、メモリー割り当てエラーなどのリソース制限に達した。 |
99 | スクリプトで不明なエラーが発生した。 |
A.1.5. 使用方法
ここでは、ldclt
を使用して Directory Server をテストする一般的な例を説明します。より複雑な例を含むテストスクリプトは、ldclt
ソースファイルにあります。このファイルは、389 Directory Server プロジェクト (https://github.com/389ds/389-ds-base/tree/master/ldap/servers/slapd/tools/ldclt/examples) からダウンロードできます。
すべての ldclt
コマンドには、(テストのタイプによって異なる) 実行パラメーターと (すべての操作タイプで同じ) 接続パラメーターのセットが必要です。以下に例を示します。
# ldclt -e execution_parameters -h localhost -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com"
ldclt
を実行すると、まずそのテスト用に設定されたすべてのパラメーターを出力します。
Process ID = 1464 Host to connect = localhost Port number = 389 Bind DN = cn=Directory Manager Passwd = secret Referral = on Base DN = ou=people,dc=example,dc=com Filter = "cn=MrXXX" Max times inactive = 3 Max allowed errors = 1000 Number of samples = -1 Number of threads = 10 Total op. req. = -1 Running mode = 0xa0000009 Running mode = quiet verbose random exact_search LDAP oper. timeout = 30 sec Sampling interval = 10 sec Scope = subtree Attrsonly = 0 Values range = [0 , 1000000] Filter's head = "cn=Mr" Filter's tail = ""
A.1.5.1. LDIF の生成
ldclt
ツール自体を使用して、テストに使用できる LDIF ファイルを生成できます。
LDIF ファイルを生成する際に、ldclt
ツールはサーバーへの接続や操作の実行を試みません。
LDIF ファイルの生成には、エントリーの作成にツールが使用する基本的なテンプレートファイル (-e object
) と、指定した出力ファイル (-e genldif
) が必要です。
テンプレートファイルでは、エントリー属性に明示的な値を指定することや、変数を使用することができます。エントリー属性に一意の値を簡単に指定する場合は、/usr/share/dirsrv/data
ディレクトリーに、姓、名、および組織単位を生成する 3 つのデータファイルが含まれます。これらの値のリストは、テストユーザーおよびディレクトリーツリー (それぞれ dbgen-FamilyNames
、dbgen-GivenNames
、および dbgen-OrgUnits
) を作成するために使用できます。これらのファイルは、rndfromfile
オプション、incrfromfile
オプション、または incrfromfilenoloop
オプションで使用できます。
テンプレートファイルの基本的な形式は次のとおりです。
# comment attribute: string | variable=keyword(value)
変数は A から H までの任意の文字にすることができます。使用できるキーワードは、表A.4「ldclt テンプレート LDIF ファイルのキーワード」にリスト表示されています。
一部の変数およびキーワードは、-e object
オプションおよびその他の利用可能なパラメーター (rdn
など) で渡すことができます。
-e object=inet.txt,rdn='uid:[A=INCRNNOLOOP(0;99999;5)]'
キーワード | 説明 | 形式 |
---|---|---|
RNDN | 指定された範囲 (low - high) 内で指定の長さの、ランダムな値を生成します。 | RNDN(low;high;length) |
RNDFROMFILE | 指定されたファイルで利用可能な値からランダムな値を取得します。 | RNDFROMFILE(filename) |
INCRN | 指定された範囲 (low - high) 内で指定の長さの、連続した値を生成します。 | INCRN(low;high;length) |
INCRNOLOOP | (インクリメント範囲をループすることなく) 指定された範囲内 (low - high) で、指定された長さの連続した値を作成します。 | INCRNOLOOP(low;high;length) |
INCRFROMFILE | 指定のファイルの値全体をインクリメントして値を作成します。 | INCRFROMFILE(filename) |
INCRFROMFILENOLOOP | 値をループバックすることなく、ファイルの値全体をインクリメントして値を作成します。 | INCRFROMFILENOLOOP(filename) |
RNDS | 指定された長さのランダムな値を生成します。 | RNDS(length) |
たとえば、このテンプレートファイルは /usr/share/dirsrv/data
のサンプルファイルから名前を取得し、他の属性を動的にビルドします。
例A.1 テンプレートファイルの例
objectclass: inetOrgPerson sn: [B=RNDFROMFILE(/usr/share/dirsrv/data/dbgen-FamilyNames)] cn: [C=RNDFROMFILE(/usr/share/dirsrv/data/dbgen-GivenNames)] [B] password: test[A] description: user id [A] mail: [C].[B]@example.com telephonenumber: (555) [RNDN(0;999;3)]-[RNDN(0;9999;4)]
続いて、ldclt
コマンドは、そのテンプレートを使用して 100,000 エントリーを持つ LDIF ファイルをビルドします。
# ldclt -b "ou=people,dc=csb" -e object=inet.txt,rdn='uid:[A=INCRNNOLOOP(0;99999;5)]' -e genldif=100Kinet.ldif,commoncounter
A.1.5.2. エントリーの追加
ldclt
ツールは、2 つのテンプレートのいずれかにマッチするエントリーを追加できます。
- person
- inetorgperson
-f
フィルターは、ユーザーエントリーの命名属性の形式を設定します。たとえば、-f "cn=MrXXXXX"
は、-f "cn=Mr01234"
ような名前を作成します。-f
で person
または inetorgperson
パラメーターを使用すると、基本的なエントリーが作成されます。
objectclass: person sn: ex sn cn: Mr01234
rdn
パラメーターと object
ファイルを使用して、さらに複雑なエントリー (検索とテストの変更に適切) を作成できます。エントリーの全オプションについては、「LDIF の生成」で説明されています。rdn
パラメーターおよび object
パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn
実行パラメーターはキーワードパターン (表A.4「ldclt テンプレート LDIF ファイルのキーワード」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。
-e rdn='uid:[A=INCRNNOLOOP(0;99999;5)]',object=inet.txt
ldclt
ツールは、数値順にエントリーを作成します。つまり、これらのエントリーを追加する方法およびシーケンスをカウントする方法も定義する必要があります。このためのいくつかの可能なオプションは次のとおりです。
- -r および -R: エントリーの数値の範囲を設定します
- incr または random: 番号の割り当て方法を設定します (-f でのみ使用されます)
- -r および -R: エントリーの数値の範囲を設定します
- noloop: 範囲の最後に到達したら、ループバックするのではなく add 操作を停止します
例A.2 エントリーの追加
# ldclt -b ou=people,dc=example,dc=com -D "cn=Directory Manager" -w secret -e add,person,incr,noloop,commoncounter -r0 -R99999 -f "cn=MrXXXXX" -v -q
add
操作は、より複雑なテスト用にディレクトリーツリーをビルドするのにも使用できます。存在しないブランチに属するディレクトリーにエントリーが追加されるたびに、ldclt
ツールはそのブランチエントリーを自動的に作成します。
存在しないブランチの子であるエントリーを初めて追加すると、ブランチエントリーがディレクトリーに追加されます。ただし、エントリー自体は追加されません。これ以降のエントリーは新しいブランチに追加されます。
ブランチエントリーを自動的に追加するには、その命名属性を cn
、o
、または ou
にする必要があります。
例A.3 ディレクトリーツリーの作成
# ldclt -b ou=DeptXXX,dc=example,dc=com
-D "cn=Directory Manager" -w secret -e add,person,incr,noloop,commoncounter -r0 -R99999 -f "cn=MrXXXXX" -v -q
A.1.5.3. 検索操作
最も基本的な ldclt
検索テストは、指定されたベース DN 内のすべてのエントリーを検索します。これには、esearch
と random
の 2 つの実行パラメーターが使用されます。
例A.4 基本的な検索操作
# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com" -f uid=testXXXXX -e esearch,random -r0 -R99999 -I 32
すべてのエントリーを返す検索は、スレッドごとに 1 GB 程度の大量のメモリーを使用する可能性があります。ldclt
は、1 つのエントリーを返す検索を実行するように設計されています。
検索結果を拡張して、エントリーに含まれる属性を返すことができます (「LDIF の生成」に、複数の属性が含まれるエントリーを生成するための情報が記載されています)。エントリーの属性の特定リストを返すには、attrlist
実行パラメーターと、属性のコロン区切りリストを使用します。
例A.5 属性リストの検索
# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -f uid=XXXXX -e esearch,random -r0 -R99999 -I 32 -e attrlist=cn:mail
また、ldclt
検索操作は、検索リストからランダムに選択した属性の属性値を返すことができます。このリストは、属性のコロン区切りリストの randomattrlist
実行パラメーターで指定します。
例A.6 ランダム属性のリストの検索
# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -f uid=XXXXX -e esearch,random -r0 -R99999 -I 32 -e randomattrlist=cn:sn:ou:uid:mail:mobile:description
エントリーを照合するのに使用されるフィルターは、命名属性だけでなく、他のエントリー属性を対象とすることができます。生成された LDIF の属性により異なります。
例A.7 代替のフィルターを使用した検索
# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -f mail=XXXXXX@example.com
-e esearch,random -r0 -R99999 -I 32 -e randomattrlist=cn:sn:ou:uid:mail:mobile:description
検索操作では、RDN 形式のフィルターを使用してエントリーを検索することもできます。rdn
パラメーターおよび object
実行パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn
実行パラメーターはキーワードパターン (表A.4「ldclt テンプレート LDIF ファイルのキーワード」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。
例A.8 RDN フィルターを使用した検索
# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -e rdn='mail:[RNDN(0;99999;5)]@example.com',object="inet.txt" -e attrlist=cn:telephonenumber
A.1.5.4. 操作の変更
attreplace
実行パラメーターは、エントリーの特定属性を置き換えます。
変更操作では、RDN フィルターを使用して更新するエントリーを検索します。rdn
パラメーターおよび object
パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn
実行パラメーターはキーワードパターン (表A.4「ldclt テンプレート LDIF ファイルのキーワード」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。
例A.9 変更操作
# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com" -e rdn='uid:[RNDN(0;99999;5)]' -I 32 -e attreplace='description: random modify XXXXX'
A.1.5.5. modrdn 操作
ldclt
コマンドは、2 種類の modrdn 操作をサポートします。
- エントリーの名称変更
- エントリーの新しい親への移動
ldclt
ユーティリティーは、無作為に選択された DN から新しいエントリー名または親を作成します。
基本的な名称変更操作には、3 つの実行パラメーターが必要です。
- rename
- rdn='pattern'
- object=file
rdn
パラメーターおよび object
パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn
実行パラメーターはキーワードパターン (表A.4「ldclt テンプレート LDIF ファイルのキーワード」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。
例A.10 単純な名前操作
# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com" -I 32 -I 68 -e rename,rdn='uid:[RNDN(0;999;5)]',object="inet.txt"
withnewparent
実行パラメーターを使用すると、エントリーの名前が変更され、新しい親エントリーの下に移動します。親エントリーが存在しない場合は、ldclt
ツールがこれを作成します。[3]
例A.11 エントリーの名前を変更して新しい親に移動する
# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret12 -b "ou=DeptXXX,dc=example,dc-com" -I 32 -I 68 -e rename,withnewparent,rdn='uid:Mr[RNDN(0;99999;5)]',object="inet.txt"
A.1.5.6. 操作の削除
ldclt
の削除操作は、追加操作のまったく逆になります。追加と同様に、削除操作は複数の方法でエントリーを削除できます。
-
ランダムに (
-e delete,random
) -
RDN-ranges (
-e delete,rdn=
[pattern]) -
順次 (
-e delete,incr
)
ランダム削除は、指定されたエントリーの範囲内で実行されるように設定されます。これには以下のオプションが必要です。
- -e delete,random
- バインドされた範囲の -r および -R
- -f (フィルターがエントリーと一致する)
例A.12 ランダム削除操作
# ldclt -b "ou=people,dc=example,dc=com" -D "cn=Directory Manager" -w secret -e delete,random -r0 -R99999 -f "uid=XXXXXX" -I 32 -v -q
RDN ベースの削除は、キーワード (表A.4「ldclt テンプレート LDIF ファイルのキーワード」にリスト表示されている) と共に rdn
実行パラメーターを使用して、テキストファイルにリスト表示されているエントリーからエントリープールを取得します。この形式には 3 つの実行パラメーターが必要です。
- -e delete
- -e rdn='pattern'
- -e object='file'
例A.13 RDN ベースの削除操作
# ldclt -b "ou=people,dc=example,dc=com" -D "cn=Directory Manager" -w secret -e delete,rdn='uid:[INCRNNOLOOP(0;99999;5)]',object="inet.txt" -I 32 -v -q
最後の削除操作形式はランダム削除形式と似ていますが、ランダムではなく、指定した範囲を順番に処理するだけです。
- -e delete,incr
- バインドされた範囲の -r および -R
- -f (フィルターがエントリーと一致する)
例A.14 順次削除操作
# ldclt -b "ou=people,dc=example,dc=com" -D "cn=Directory Manager" -w secret -e delete,incr -r0 -R99999 -f "uid=XXXXXX" -I 32 -v -q
A.1.5.7. バインド操作
デフォルトでは、各 ldclt
スレッドはサーバーに一度バインドし、そのすべての操作を 1 つのセッションで実行します。-e bindeach
は他の操作と併用して、操作ごとにバインドしてから、次の操作を開始する前にバインドを解除することを ldclt
ツールに指示します。
-e add,bindeach ...
バインドおよびバインド解除操作のみをテストするには、-e bindeach,bindonly
実行パラメーターを使用し、他の操作情報は使用しません。以下に例を示します。
# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -e bindeach,bindonly -e bind_info
バインド操作は、接続パラメーターで -D
および -w
ユーザー名/パスワードペアを使用して、テストに使用する単一のユーザーを指定できます。
-e close
オプションをバインドパラメーターと共に使用して、完全にバインドを解除するのではなく、接続を破棄することが Directory Server に及ぼす影響をテストします。
例A.15 バインドのみおよびテスト終了
# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -e bindeach,bindonly,close
指定のファイル (randombinddnfromfile
) からランダムなバインドアイデンティティーを選択するために使用できる、または範囲内からランダムに選択された DN(-e randombinddn,randombinddnhigh=Y
) を使用する実行パラメーターもあります。
例A.16 ファイル内の ID からのランダムバインド
# ldclt -h localhost -p 389 -e bindeach,bindonly -e randombinddnfromfile=/tmp/testbind.txt
ランダムなアイデンティティーとのバインディングは、生成された LDIF からアイデンティティーが追加されている場合や、-e add
を使用してアカウントが範囲に追加された場合に便利です。ldclt
ツールは、X を変数として使用し、指定された範囲でインクリメントして値を自動生成できます。
例A.17 ランダムベース DN からのランダムバインド
# ldclt -h localhost -p 389 -e bindeach,bindonly -D "uid=XXXXX,dc=example,dc=com" -w testXXXXX -e randombinddn,randombinddnlow=0,randombinddnhigh=99999
A.1.5.8. ランダムベース DN での操作の実行
ランダムに選択されたベース DN に対して、任意の操作を実行できます。3 つの randombase
パラメーターは、選択元となる組織単位の範囲を設定します。-b
ベースエントリーの変数はベース DN の形式を設定します。
-b "ou=DeptXXX,dc=example,dc=com" -e randombase,randombaselow=0,randombasehigh=999 ...
A.1.5.9. TLS 認証
セキュアな認証およびセキュアな接続のパフォーマンスをテストするために、すべての操作を TLS 経由で実行できます。TLS 認証には 2 つのパラメーターが必要です。
-
Directory Server のセキュリティーデータベースへのパスを指定する接続パラメーター
-Z
-
TLS データベースにアクセスするためにサーバーが要求する情報が含まれる実行パラメーター
cltcertname
、keydbfile
、およびkeydbpin
たとえば、これは TLS を介してバインドテストを実行します。
# ldclt -h host -p port -e bindeach,bindonly -Z certPath -e cltcertname=certName,keydbfile=filename,keydbpin=password
A.1.5.10. 破棄操作
-e abandon
パラメーターを開いてから、サーバーでの操作をキャンセルします。この操作はそれ自体で、または他のタイプの操作 ( -e add
、-e esearch
など) と共に実行できます。
# ldclt -e abandon -h localhost -p 389 -D "cn=Directory Manager" -w secret -v -q -b "ou=people,dc=example,dc=com"