付録A Directory Server で利用可能なスクリプトのテスト

Red Hat Directory Server は、異なるストレスまたは負荷条件で Directory Server のパフォーマンス をテストする 2 つのスクリプトを提供します。テストスクリプトは、異なる環境をシミュレートします。

ldclt および rsearch の両方が /usr/bin ディレクトリーにあります。

A.1. ldclt(Load Stress Tests)

LDAP クライアントスクリプト(ldclt)は、Directory Server をロードするために、ユーザー定義のシナリオにおいて、サーバーに複数のクライアント接続を確立します。クライアント操作には、LDIF ファイルの生成など、ディレクトリーの追加、検索、変更、変更、削除、およびセットアップ操作が含まれます。操作をランダム化 - 新規ユーザーとしてバインドおよびバインド解除でき、乱数を実行してディレクトリーに対するより現実的な使用環境をシミュレーションできます。

ldclt ツールは、Directory Server のパフォーマンスを測定するために継続的に行われる操作の完了時間を測定します。複数のスレッドを使用すると、負荷が大きいときにパフォーマンスをテストすることができます。各テストは同じタイプの LDAP 操作を実行しますが、異なる設定(異なるユーザー認証情報、属性タイプ、サイズ、およびターゲットサブツリーなど)で使用されます。

管理者は、LDAP 操作変数の定義とともに、スレッドのパフォーマンスを制御でき、サーバーに特定の負荷を設定できます。

ldclt ツールは、特に自動化されたテストに使用することが意図されているため、そのオプションは複雑なテスト操作でも、広範囲かつ柔軟で、簡単にスクリプト化されます。

注記

ldclt はロードテストであるため、大量のシステムリソースを使用することに注意してください。このツールは、最低 8 MB のメモリーを使用します。スレッドの数、操作の種類、その他の設定によっては、より多くのメモリーを使用できます。

それらの操作に使用する操作のタイプや、その操作に使用するディレクトリーデータによっては、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.1 ldclt オプション

オプション説明

-a max_pending_ops

保留中の操作の最大数を定義して、ツールを非同期モードで実行します。

-b base_dn

LDAP 操作テストの実行に使用するベース DN を指定します。指定しない場合、デフォルト値は dc=example,dc=com になります。

-D bind_dn

サーバーへの接続に使用する ldclt ユーティリティーのバインド DN を指定します。

-E max_errors

ツールの終了前に LDAP 操作で実行可能なエラーの最大数を設定します。デフォルトは 1000 です。

-e execution_params

テストに使用する操作およびその他のテスト環境パラメーターのタイプを指定します。-e に設定 可能な値は、表A.2「実行パラメーター」 に一覧表示されます。このオプションは、コンマ区切りリストで複数の値を使用できます。

-f filter

検索テストに使用する LDAP 検索フィルターを指定します。

-h

テストを実行する Directory Server のホスト名または IP アドレスを指定します。ホストが指定されていない場合、ldclt はローカルホストを使用します。

-I error_code

特定の応答コードに一致するエラーを無視するように ldclt に指示します。たとえば、- I 89 は、エラーコード 89 を無視するようにサーバーに指示します。

-i inactivity_times

終了する前にツールを非アクティブにできる間隔数を設定します。デフォルトでは、この設定は 3 であり、これは 30 秒(各操作間隔は 10 秒の長さ)に変換されます。

-N number_of_samples

実行する反復数を設定します。つまり、実行する 10 秒間のテスト期間を設定します。デフォルトでは、このツールは無限であり、手動で停止した場合にのみツールが終了します。

-n number_of_threads

操作に対して同時に実行するスレッドの数を設定します。デフォルト値は 10 です。

-o SASL_option

SASL を使用してサーバーに接続するようにツールに指示し、使用する SASL メカニズムを提供します。形式は -o saslOption=value です。saslOption には 6 つの値のいずれかを指定できます。

* mech(SASL 認証メカニズム)

* authid、サーバーにバインドしているユーザー(Kerberos プリンシパル)

* authzid、プロキシー承認(プロキシー承認がサポートされないためサーバーで無視)

* secProp、セキュリティープロパティー

* レルム、Kerberos レルム

* フラグ

予想される値は、サポートされるメカニズムによって異なります。-o は複数回使用して、メカニズムに必要な SASL 情報をすべて渡すことができます。以下に例を示します。

[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

「super」quiet モードでツールを実行します。これは、ldclt により実行される操作で発生したエラーを無視します。

-q

quiet モードでツールを実行します。

-R number

範囲の大量を設定します。

-r number

範囲の数が少ないように設定します。

-S consumer_name

レプリケーションテストを実行するために接続するコンシューマーサーバーのホスト名を指定します。

-s scope

検索条件を指定します。ldapsearch と同様に、値は subtree、one、または base になります。

-T ops_per_thread

1 スレッドあたりに最大操作数を設定します。

-t timeout

LDAP 操作のタイムアウト期間を設定します。デフォルトは 30 秒です。

-V

ツールを非常に冗長モードで実行します。

-v

ツールを verbose モードで実行します。

-W wait_time

ldclt ツールが、1 つの操作終了後、次の操作を開始するまでの待機時間を秒単位で設定します。デフォルトは 0 で、待機時間がないことを意味します。

-w password

-D アイデンティティーで、テスト用に Directory Server にバインドするために使用するパスワードを指定します。

-Z /path/to/cert.db

テスト接続の TLS を有効にし、証明書データベースとして使用するファイルをポイントします。

-e オプションは、ldclt テスト操作の実行パラメーターを設定します。コンマ区切りリストで複数のパラメーターを設定できます。以下に例を示します。

-e add,bindeach,genldif=/var/lib/dirsrv/slapd-instance/ldif/generated.ldif,inetOrgPerson

表A.2 実行パラメーター

パラメーター説明

abandon

非同期検索要求のためにバンドンの機会を開始します。

add

ディレクトリーにエントリーを追加します(ldapadd)。

append

genldif オプションで生成された LDIF ファイルの最後にエントリーを追加します。

ascii

ASCII 7 ビットの文字列を生成します。

attreplace=name:mask

既存のエントリーの属性(名前)を置き換える変更操作を実行します。

attrlist=name:name:name

検索操作で返す属性の一覧を指定します。

attrsonly=#

検索操作とともに使用して、属性値を読み取るかどうかを設定します。0(読み取りの値)または 1(値は読み取らない)のいずれかになります。

bindeach

試行する各操作でバインドするように ldclt ツールに指示します。

bindonly

ldclt ツールに、bind/unbind 操作の実行のみを実行するように指示します。他の操作は実行されません。

close

バインド解除操作を実行するのではなく、ツールに対して接続を閉じるよう指示します。

cltcertname=name

TLS 接続に使用する TLS クライアント証明書の名前を指定します。

commoncounter

ldclt ツールにより開いているすべてのスレッドを使用して、同じカウンターを共有します。

counteach

ツールに対し、成功した操作だけでなく、各操作をカウントするように指示します。

delete

削除操作を開始します。

deref

検索操作(esearch)に逆参照制御を追加します。この追加により、これは ldclt に、新たなエントリーに secretary 属性を追加し、逆参照検索を許可するように指示します。

dontsleeponserverdown

サーバーが停止している場合は、ツールは非常に高速にループします。

emailPerson

これにより、emailPerson オブジェクトクラスが生成されたエントリーに追加されます。これは add 操作でのみ有効です (-e add)。

esearch

正確な検索を実行します。

genldif=filename

操作で使用する LDIF ファイルを生成します。

imagesdir=path

テストで使用するイメージの場所を指定します。

incr

増分値を有効にします。

inetOrgPerson

これにより、inetOrgPerson オブジェクトクラスが生成されたエントリーに追加されます。これは add 操作でのみ有効です (-e add)。

keydbfile=file

TLS 接続で使用するキーデータベースのパスおよびファイル名が含まれます。

keydbpin=password

キーデータベースにアクセスするためのトークンパスワードが含まれます。

noglobalstats

定期的なグローバル統計を出力 しないように ツールに指示します。

noloop

増分数をループしません。

object=filename

入力ファイルからオブジェクトを構築します。

person

これにより、person オブジェクトクラスが生成されたエントリーに追加されます。これは add 操作でのみ有効です (-e add)。

random

ランダムフィルターやランダムベース DNS などのランダムな要素をすべて使用するように ldclt ユーティリティーに指示します。

randomattrlist=name:name:name

ldclt ユーティリティーに指示し、指定のリストからランダムな属性を選択します。

randombase

ldclt ユーティリティーに指示し、ディレクトリーからランダムなベース DN を選択します。

randombaselow=value

乱数ジェネレーターの低い値を設定します。

randombasehigh=value

乱数ジェネレーターの高い値を設定します。

randombinddn

ldclt ユーティリティーに、ランダムなバインド DN を使用するように指示します。

randombinddnfromfile=file

ファイルから選択した無作為なバインド DN を使用するように ldclt ユーティリティーに指示します。ファイルの各エントリーには、適切な DN パスワードのペアが必要です。

randombinddnlow=value

乱数ジェネレーターの低い値を設定します。

randombinddnhigh=value

乱数ジェネレーターの高い値を設定します。

rdn=attrname:value

検索フィルターとして使用する RDN を指定します。これは、- f フィルターの 代わりに使用されます。

referral=value

操作の参照動作を設定します。on(allow referrals)、off(allow referrals)、または rebind(atbind)の 3 つのオプションがあります(再度接続を試みます)。

smoothshutdown

ワーカースレッドが終了するまでメインスレッドをシャットダウンしないように ldclt ユーティリティーに指示します。

文字列

ldclt ユーティリティーに指示し、乱数ではなくランダムな文字列を作成します。

v2

テスト操作に LDAPv2 を使用するように ldclt ユーティリティーに指示します。

withnewparent

modRDN 操作を実行し、新しい親セットを引数としてエントリーの名前を変更します。

randomauthid

ランダムな SASL 認証 ID を使用します。

randomauthidlow=value

ランダムな SASL 認証 ID の low 値を設定します。

randomauthidhigh=value

無作為の SASL 認証 ID に高い値を設定します。

A.1.3. ldclt の結果

ldclt は、指定したスレッド数で、指定した操作を継続的に実行します。デフォルトでは、パフォーマンス統計は、10 秒ごとに 10 秒ごとにプリントします。

結果には、スレッドごとの平均演算数と秒ごとの平均演算数と、その 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.

一部の操作(追加など)や、- 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 Exit Codes の終了

ldclt コマンドは、無限に実行されます。このスクリプトは、致命的なランタイムや初期化エラーが発生したり、LDAP エラーの制限に到達したり、すべてのスレッドを複製したり、操作または時間制限に到達したりなど、便利な状況で停止できます。

実行の統計は、スクリプトの終了またはスクリプトを終了して、コマンドが完了するまで表示されません。ldclt スクリプトを中断する方法は 2 つあります。

  • control-backslash(kbd:[^\])に達するか、または kill -3 はスクリプトを終了せずに現在の統計を出力します。
  • Control-C(^C)または kill -2 がスクリプトを終了し、グローバル統計を出力します。

ldclt スクリプトが終了または中断すると、統計情報およびエラー情報と共に終了コードが返されます。

表A.3 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://git.fedorahosted.org/cgit/389/ds.git/tree/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 オブジェクト)を作成するために使用する基本的なテンプレートファイルと、指定の出力ファイル(-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 Template LDIF File Keywords」

一部の変数とキーワードは、- e オブジェクト オプションと、その他の利用可能なパラメーター(例: rdn)を使用して渡すことができます。

-e object=inet.txt,rdn='uid:[A=INCRNNOLOOP(0;99999;5)]'

表A.4 ldclt Template LDIF File Keywords

キーワード説明形式

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" などの名前を作成します。-fperson または inetorgperson パラメーターを使用すると基本的なエントリーが作成されます。

objectclass: person
sn: ex sn
cn: Mr01234

より複雑なエントリー(検索と変更が適切な)は、a rdn パラメーターと オブジェクトファイル を使用して作成できます。エントリーに対するすべてのオプションは、「LDIF の生成」 で説明されています。rdn パラメーターおよび object パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn 実行パラメーターはキーワードパターン (表A.4「ldclt Template LDIF File Keywords」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。

-e rdn='uid:[A=INCRNNOLOOP(0;99999;5)]',object=inet.txt

ldclt ツールは、数値順にエントリーを作成します。そのため、これらのエントリーの追加方法およびシーケンスのカウント方法も定義する必要があります。これには、以下のような選択肢があります。

  • -r および -R: エントリーの数値の範囲を設定します。
  • 数字の割り当て方法を設定する incr または random(これらは -f でのみ使用されます)
  • -r および -R: エントリーの数値の範囲を設定します。
  • noloop: ループループではなく、範囲の終わりにヒットした場合に追加操作を停止します。

例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.4. 操作の変更

attreplace 実行パラメーターは、エントリーの特定の属性を置き換えます。

modify 操作は、RDN フィルターを使用して、更新するエントリーを検索します。rdn パラメーターおよび object パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn 実行パラメーターはキーワードパターン (表A.4「ldclt Template LDIF File Keywords」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。

例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 から新しいエントリー名または親を作成します。

基本的な rename 操作を実行するには、3 つの実行パラメーターが必要です。

  • 名前の変更
  • rdn='pattern'
  • object=file

rdn パラメーターおよび object パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn 実行パラメーターはキーワードパターン (表A.4「ldclt Template LDIF File Keywords」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。

例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 execution パラメーターを使用してエントリーの名前を変更し、新しい親エントリーの下に移動します。親エントリーが存在しない場合は、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 delete 操作は、add 操作とまったく逆になります。追加と同様に、削除操作はさまざまな方法でエントリーを削除できます。

  • ランダム(-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 Template LDIF File Keywords」に記載されている)を指定して 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

最後の delete 操作形式は、ランダムの削除形式と同様に、無作為にではなく、指定の範囲で順次移動します。

  • -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 つのサーバーに 1 回バインドし、そのすべての操作を 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

bind 操作は、接続パラメーターで -D および - w のユーザー名のペアを使用して、テストに使用する 1 人のユーザーを指定できます。

注記

bind パラメーターで -e close オプションを使用し、適切にバインド解除するのではなく、接続を Directory Server 上でドロップする影響をテストします。

例A.15 バインド専用テストおよびクローズテスト

# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -e bindeach,bindonly,close

また、指定のファイルからランダムなバインドアイデンティティー(randombinddnfromfile)を選択するか、範囲(-e randombinddnlow=X,randombinddnhigh=Y)から無作為に選択された DN を使用した実行パラメーターもあります。

例A.16 ファイルのアイデンティティーからランダムなバインド

# 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 に対して実行できます。randombase パラメーターの trio は、選択する組織単位の範囲を設定します。-b base エントリーの変数は、ベース 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
  • 実行パラメーター( cltcertnamekeydbfile、および 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 や -eesearch など)を使用して実行できます。

# ldclt -e abandon -h localhost -p 389 -D "cn=Directory Manager" -w secret -v -q -b "ou=people,dc=example,dc=com"


[3] add 操作と同様に、親がツールによって最初に参照されると、親エントリーが作成されますが、追加操作の入力を求めるエントリー は作成されません