附录 A. 测试 Directory 服务器可用的脚本
红帽目录服务器提供两个脚本,可用于在不同的压力或负载条件中 测试 目录服务器性能。测试脚本模拟不同的环境,使管理员能够在将配置或机器更改放入生产环境之前对其进行评估。
ldclt
和 rsearch
都位于 /usr/bin
目录中。
A.1. ldclt(Load Stress Tests)
LDAP 客户端脚本(ldclt
)在用户定义的场景中建立到服务器的多个客户端连接,以加载目录服务器。客户端操作包括目录添加、搜索、修改、修改、修改和删除,以及生成 LDIF 文件等设置操作。操作可以随机化 - 将和取消绑定作为随机用户,执行随机任务 - 为 目录模拟更现实的使用环境。
ldclt
工具测量持续处理操作的完成时间,以测量目录服务器的性能。通过使用多个线程,可以在高负载下测试性能。每个测试都执行相同类型的 LDAP 操作,但使用不同的设置(如不同的用户凭证、不同属性类型或大小)以及不同的目标子树。
除了定义 LDAP 操作变量外,管理员可以控制线程性能,以在服务器上设置特定的负载。
ldclt
工具专门用于自动测试,因此即使用于复杂的测试操作,其选项也广泛、灵活且易于编写。
请记住,ldclt
是负载测试,因此使用了大量系统资源。该工具使用至少 8 MB 内存。根据线程数量、操作类型和其他配置设置,它可以使用更多内存。
根据操作类型和用于这些操作的目录数据,ldclt
可以设置自己的资源限值。有关管理系统资源限制的详情,请查看 ulimit
的 man page 和 getrlimit
。
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-iinactive_times-Nnumber_of_samples-Ierror_code-Ttotal_number_of_operations-rlow_range-Rhigh_range-ffilter-sscope-Sconsumer-P vendor_port-Wwait_time-Zcertificate_file
A.1.2. ldclt Options
选项 | 描述 |
---|---|
-a max_pending_ops | 以异步模式运行工具,且定义的最大待处理操作数。 |
-b base_dn |
提供用于运行 LDAP 操作测试的基本 DN。如果未指定,则默认值为 |
-D bind_dn |
为 |
-e max_errors | 在工具退出前,设置测试 LDAP 操作中允许发生的最多错误数。默认值为 1000。 |
-e execution_params |
指定用于测试的操作类型和其他测试环境参数。 |
-f filter | 提供一个 LDAP 搜索过滤器以用于搜索测试。 |
-h |
指定要针对其运行测试的目录服务器的主机名或 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 realm * 标记
预期值取决于支持的机制。可以多次使用 [literal,subs="+quotes,verbatim"] …. -o "mech=DIGEST-MD5" -o "authzid=test_user" -o "authid=test_user" …. |
-P supplier_port | 提供用来连接到供应商服务器以进行复制测试的端口。默认(如果没有指定)为 16000。 |
-p 端口 | 为要测试的目录服务器实例提供服务器端口号。 |
-Q |
以"super"静默模式运行该工具。这会忽略由 |
-q | 以静默模式运行该工具。 |
-R number | 为范围设置高数字。 |
-R number | 设置范围较低数量。 |
-S consumer_name | 提供要连接的消费者服务器的主机名来运行复制测试。 |
-S 范围 |
给出搜索范围。与 |
-T ops_per_thread | 设置每个线程允许的最大操作数。 |
-T timeout | 为 LDAP 操作设置超时周期。默认值为 30 秒。 |
-V | 以非常详细模式运行该工具。 |
-v | 以详细模式运行该工具。 |
-W wait_time |
为 |
-w password |
提供用于 -D 身份的密码,通过 |
-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 | 运行修改操作,替换现有条目中的属性(名称)。 |
attrlist=name:name:name | 指定要在搜索操作中返回的属性列表。 |
attrsonly=# | 用于搜索操作,设置是否读取属性值。可能的值有 0(读取值)或 1(不读取值)。 |
bindeach |
告知 |
only |
告知 |
关闭 | 告诉工具关闭连接,而不是执行 unbind 操作。 |
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 | 来自输入文件的构建条目对象。 |
个人 |
这会将 |
random |
告知 |
randomattrlist=name:name:name |
告知 |
randombase |
告知 |
randombaselow=value | 为随机生成器设置 low 值。 |
randombasehigh=value | 为随机生成器设置高值。 |
randombinddn |
告知 |
randombinddnfromfile=file |
告知 |
randombinddnlow=value | 为随机生成器设置 low 值。 |
randombinddnhigh=value | 为随机生成器设置高值。 |
rdn=attrname:value |
提供一个 RDN 以用作搜索过滤器。这代替了 |
referral=value | 设置操作的参考行为。有三个选项: on(allow referrals)、off(disallow referrals)或 rebind(attempt to connect)。 |
smoothshutdown |
告知 |
字符串 |
告知 |
v2 |
告知 |
withnewparent | 执行 modRDN 操作,重命名将新parent 设置为参数的条目。 |
randomauthid | 使用随机 SASL 验证 ID。 |
randomauthidlow=value | 为随机 SASL 身份验证 ID 设置 low 值。 |
randomauthidhigh=value | 为随机 SASL 身份验证 ID 设置 high 值。 |
A.1.3. ldclt 的结果
ldclt
持续运行指定的任何操作,超过指定的线程数量。默认情况下,它将性能统计数据每十(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
脚本。
-
按 control-backslash(kbd:[^\])或
kill -3
会在不退出脚本的情况下打印当前统计信息。 -
按 control-C(^C)或
kill -2
退出脚本并打印全局统计信息。
当 ldclt
脚本退出或中断时,它会返回一个退出代码以及统计信息和错误信息。
退出代码 | 描述 |
---|---|
0 | 成功(无错误)。 |
1 | 操作遇到严重错误。 |
2 | 通过 工具传递的参数中出现错误。 |
3 | 该工具达到 LDAP 错误的最大数量。 |
4 | 该工具无法绑定到 Directory 服务器实例。 |
5 | 该工具无法加载 TLS 库来通过 TLS 连接。 |
6 | 有一个多线程(mutex)错误。 |
7 | 存在初始化问题。 |
8 | 该工具达到资源限值,如内存分配错误。 |
99 | 该脚本遇到未知错误。 |
A.1.5. 使用场景
它们提供了使用 ldclt
测试目录服务器的一般示例。在 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 对象
),然后是指定的输出文件(-e genldif
)。
模板文件可以为条目属性赋予显式值,也可以使用变量。如果您希望提供条目属性的唯一值的简单方法,/usr/share/dirsrv/data
目录包含三个数据文件来生成 surname、名字和机构单元。这些值列表分别用于创建测试用户和目录树(dbgen-FamilyNames
、dbgen-GivenNames
和 dbgen-OrgUnits
)。这些文件可与 rndfromfile
、incrfromfile
或 incrfromfile
选项一起使用。
模板文件的基本格式为:
# 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)]'
关键字 | 描述 | 格式 |
---|---|---|
RNDN | 在指定范围内生成一个随机值(低 - high)和指定长度的。 | RNDN(low;high;length) |
RNDFROMFILE | 从指定文件中任何可用值拉取随机值。 | RNDFROMFILE(filename) |
INCRN | 在指定范围内创建连续值(低 - high)和给定长度的。 | INCRN(低;high;length) |
INCRNOLOOP | 在指定范围(低 - 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
工具可以添加与两个模板之一匹配的条目:
- 个人
- inetorgperson
-f
过滤器为用户条目设置 naming 属性格式。例如,-f "cn=MrXXXXX"
创建了一个名称,如 -f "cn=Mr01234"
。将 person
或 inetorgperson
参数与 -f
一起使用将创建一个基本条目。
objectclass: person sn: ex sn cn: Mr01234
可以使用 rdn
参数和 对象文件
创建更复杂的条目(适用于搜索和修改测试)。条目的完整选项范围包括在 第 A.1.5.1 节 “生成 LDIF” 中。rdn
和 对象
参数提供要在目录中添加或编辑的条目的格式。rdn
执行参数采用关键字模式(如 表 A.4 “ldclt Template LDIF File Keywords”中列出的),并从文本文件中列出的条目中提取其条目。
-e rdn='uid:[A=INCRNNOLOOP(0;99999;5)]',object=inet.txt
ldclt
工具在数字序列中创建条目。这意味着添加这些条目和计算序列的方法也必须定义。其中的一些可能选项包括:
- -R 和 -R 可设置条目的数字范围
- 设置分配数字的方法(仅与 -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
工具会自动创建该分支条目。
第一次添加条目是不存在分支的子项,分支条目会添加到 目录中。但是,条目本身不会被添加。后续条目将添加到新分支中。
若要自动添加分支条目,其 naming 属性必须是 cn
、o
或 ou
。
例 A.3. 创建 Directory Tree
# 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
。
例 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
旨在执行返回一个条目的搜索。
可以扩展搜索结果来返回条目中包含的属性。(第 A.1.5.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. 搜索 Random 属性列表
# 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. 使用 Alternate Filters 搜索
# 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
和对象
执行参数提供要在 目录中添加或编辑的条目的格式。rdn
执行参数采用关键字模式(如 表 A.4 “ldclt Template LDIF File Keywords”中列出的),并从文本文件中列出的条目中提取其条目。
例 A.8. 使用 RDN Filters 搜索
# 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
execution 参数替换条目中的特定属性。
修改操作使用 RDN 过滤器来搜索要更新的条目。rdn
和 对象
参数提供要在目录中添加或编辑的条目的格式。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
命令支持两种类型的 modrdn 操作:
- 重命名条目
- 将条目移动到新父项
ldclt
程序从随机选择的 DN 中创建新条目名称或父级。
基本重命名操作需要三个执行参数:
- rename
- rdn='pattern'
- object=file
rdn
和 对象
参数提供要在目录中添加或编辑的条目的格式。rdn
执行参数采用关键字模式(如 表 A.4 “ldclt Template LDIF File Keywords”中列出的),并从文本文件中列出的条目中提取其条目。
例 A.10. simple Rename Operation
# 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 的删除使用 rdn
执行参数,使用关键字(如 表 A.4 “ldclt Template LDIF File Keywords”中列出的关键字),并从文本文件中列出的条目中提取其条目池。这个格式需要三个执行参数:
- -e delete
- -e rdn='pattern'
- -e object='file'
例 A.13. 基于 RDN-based Delete Operations
# 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
线程绑定一次到服务器,然后在一个会话中运行它的所有操作。v 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
用户名名称-密码对指定一个用户进行测试。
将 -e close
选项与 bind 参数配合使用,以测试丢弃连接在 Directory 服务器上具有的影响,而不是完全取消绑定。
例 A.15. 仅限绑定和关闭测试
# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -e bindeach,bindonly,close
还可使用执行参数从给定文件(randombinddnfromfile
)中选择随机绑定身份,或使用从范围(-e randombinddn,randombinddnlow=X,randombinddnhigh=Y
)随机选择的 DN。
例 A.16. 从文件中标识的随机绑定
# ldclt -h localhost -p 389 -e bindeach,bindonly -e randombinddnfromfile=/tmp/testbind.txt
如果从生成的 LDIF 添加身份或使用 -e 添加
帐户,则带有随机身份的绑定很有用。ldclt
工具可以使用 X 作为变量来自动生成值,并通过指定范围递增。
例 A.17. 来自 Random 基本 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. 在 Random 基本 DN 上运行操作
任何操作都可以针对随机选择的基本 DN 运行。randombase
参数的 trio 设置要从中选择的机构单元范围。-b
基本条目中的变量设置基本 DN 的格式。
-b "ou=DeptXXX,dc=example,dc=com" -e randombase,randombaselow=0,randombasehigh=999 ...
A.1.5.9. TLS 身份验证
每项操作都可以通过 TLS 运行,以测试安全连接的安全身份验证和性能。TLS 身份验证需要两个参数。
-
连接参数
-Z
提供目录服务器的安全数据库的路径 -
执行参数、
cltcertname
、keydbfile
和keydbpin
,其中包含服务器提示访问 TLS 数据库的信息
例如,这通过 TLS 运行 bind 测试:
# ldclt -h host -p port -e bindeach,bindonly -Z certPath -e cltcertname=certName,keydbfile=filename,keydbpin=password
A.1.5.10. abandon Operations
此时会打开 -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"