附录 A. 目录服务器提供的测试脚本


Red Hat Directory Server 提供了一个脚本,可用于在不同的压力或负载情况下 测试 目录服务器性能。test 脚本模拟不同的环境,供管理员在将配置或机器投入生产之前评估配置或机器更改。

ldclt 脚本位于 /usr/bin 目录中。

A.1. ldclt (Load Stress Tests)

LDAP 客户端脚本(ldclt)在用户定义的场景中建立到服务器的多个客户端连接,以加载目录服务器。客户端操作包括目录添加、搜索、修改、modRDN 和删除,以及生成 LDIF 文件等设置操作。操作可以是随机的 - 绑定和未绑定为随机用户,执行随机任务 - 来模拟更现实的 目录使用环境。

ldclt 工具测量持续重复操作以测量目录服务器性能的完成时间。通过使用多个线程,可以测试高负载下的性能。每个测试执行同一类型的 LDAP 操作,但使用不同的设置(如不同的用户凭据、不同的属性类型或大小以及不同的目标子树)。

除了定义 LDAP 操作变量外,管理员还可以控制线程性能,从而设置服务器上的特定负载。

ldclt 工具专门用于自动测试,因此其选项广泛、灵活且易于编写,甚至适用于复杂的测试操作。

注意

请记住,ldclt 是一个负载测试,因此使用大量系统资源。该工具使用最少 8 MB 内存。根据线程数量、操作类型和其他配置设置,它可以使用更多内存。

根据操作类型以及用于这些操作的目录数据,ldclt 可以设置自己的资源限值。有关管理系统资源限值的详情,请查看 ulimitgetrlimit 的 man page。

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-r low_range-R high_range-ffilter-sscope-Sconsumer-Pprovider_port-W wait_time-Z certificate_file

A.1.2. ldclt 选项

Expand
表 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

指定用于测试的操作和其他测试环境参数的类型。可能的值在 表 A.2 “执行参数” 中列出。此选项可以接受以逗号分隔的列表中的多个值。

-f filter

提供用于搜索测试的 LDAP 搜索过滤器。

-h

指定要针对运行测试的 Directory 服务器的主机名或 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 机制。格式为 is -o saslOption=valuesaslOption 可以有六个值之一:

* mech, SASL 身份验证机制

* authid,绑定到服务器的用户(Kerberos 主体)

* authzid,一个代理授权(服务器忽略忽略,因为不支持代理授权)

* secProp, 安全属性

* realm,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"静默模式运行该工具。这会忽略 ldclt 运行的操作中遇到的任何错误。

-q

以静默模式运行工具。

-r number

设置范围的高数字。

-r number

设置范围的低数量。

-S consumer_name

提供要连接以运行复制测试的使用者服务器的主机名。

-s scope

提供搜索范围。与 ldapsearch 一样,这些值可以是 subtree、one 或 base。

-T ops_per_thread

设置每个线程允许的最大操作数。

-T timeout

为 LDAP 操作设置超时周期。默认值为 30 秒。

-V

以非常详细的方式运行该工具。

-v

以详细模式运行工具。

-W wait_time

设置 ldclt 工具的时间(以秒为单位),以便在一个操作完成后等待下一个操作。默认值为 0,这意味着没有等待时间。

-w password

提供要使用的密码以及 -D 身份,以绑定到目录服务器进行测试。

-Z /path/to/cert.db

为测试连接启用 TLS,并指向文件以用作证书数据库。

a -e 选项设置 ldclt 测试操作的执行参数。可以用逗号分隔列表配置多个参数。例如:

-e add,bindeach,genldif=/var/lib/dirsrv/slapd-instance/ldif/generated.ldif,inetOrgPerson
Copy to Clipboard Toggle word wrap
Expand
表 A.2. 执行参数
参数描述

abandon

为异步搜索请求启动带头操作程序。

add

向目录添加条目(ldapadd)。

附加

将条目附加到使用 genldif 选项生成的 LDIF 文件的末尾。

ASCII

生成 ASCII 7 位字符串。

attreplace=name:mask

运行 修改操作,以替换现有条目中的属性(名称)。

attrlist=name:name:name

指定要在搜索操作中返回的属性列表。

attrsonly=#

与搜索操作一起使用,以设置是否读取属性值。可能的值有 0 (读取值)或 1 (不读取值)。

bindeach

告知 ldclt 工具与其尝试的每个操作绑定。

bindonly

告知 ldclt 工具仅运行 bind/unbind 操作。没有执行其他操作。

关闭

告知工具关闭连接,而不是执行 unbind 操作。

cltcertname=name

提供用于 TLS 连接的 TLS 客户端证书名称。

commoncounter

使 ldclt 工具打开的所有线程以共享相同的计数器。

counteach

告知工具计算每个操作,而不仅仅是成功。

delete

启动删除操作。

deref

为搜索操作添加解引用控制(esearch)。添加后,这告知 ldcltsecretary 属性添加到新条目中,以允许解引用搜索。

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 对象类添加到生成的条目中。这只适用于 add 操作(-e add)。

random

告知 ldclt 实用程序使用所有随机元素,如随机过滤和随机基础 DNS。

randomattrlist=name:name:name

告知 ldclt 实用程序从给定的列表中选择随机属性。

randombase

告知 ldclt 实用程序从目录中选择一个随机基础 DN。

randombaselow=value

为随机生成器设置低值。

randombasehigh=value

为随机生成器设置高值。

randombinddn

告知 ldclt 实用程序使用随机绑定 DN。

randombinddnfromfile=file

告知 ldclt 实用程序使用从文件中选择的随机绑定 DN。文件中的每个条目都必须具有适当的 DN 密码对。

randombinddnlow=value

为随机生成器设置低值。

randombinddnhigh=value

为随机生成器设置高值。

rdn=attrname:value

提供用作搜索过滤器的 RDN。这被使用,而不是 a -f 过滤器。

referral=value

设置操作的引用行为。有三个选项: on (allow referrals), off (disallow referrals)或 rebind (attempt to connect)。

smoothshutdown

告知 ldclt 工具不会关闭其主线程,直到 worker 线程退出为止。

字符串

告知 ldclt 实用程序创建随机字符串,而不是随机数字。

v2

告知 ldclt 实用程序使用 LDAPv2 测试操作。

withnewparent

执行 modRDN 操作,使用 newparent set 作为参数重命名条目。

randomauthid

使用随机 SASL 身份验证 ID。

randomauthidlow=value

为随机 SASL 身份验证 ID 设置低值。

randomauthidhigh=value

为随机 SASL 身份验证 ID 设置高值。

A.1.3. ldclt 的结果

ldclt 根据指定数量的线程持续运行任何指定的操作。默认情况下,它会每十(10)秒向屏幕打印性能统计信息。

结果显示每个线程的平均操作数和每秒操作数,然后在该 10 秒窗口中运行的操作总数。

ldclt[process_id] Average rate: number_of_ops/thr (number_of_ops/sec), total: total_number_of_ops
Copy to Clipboard Toggle word wrap

例如:

ldclt[22774]: Average rate: 10298.20/thr  (15447.30/sec), total: 154473
Copy to Clipboard Toggle word wrap

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.
Copy to Clipboard Toggle word wrap

有些操作(如添加)和使用详细输出选项,如 -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.
Copy to Clipboard Toggle word wrap

大多数错误都由 ldclt 处理,而不中断测试。遇到的任何致命错误都会使用工具的退出状态列出,并在累计总数中返回。

Global no error occurs during this session.
Copy to Clipboard Toggle word wrap

所有发生的 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 脚本退出或中断时,它会返回一个退出代码以及统计信息和错误消息。

Expand
表 A.3. ldclt Exit Codes
退出代码描述

0

成功(无错误)。

1

操作遇到严重严重错误。

2

使用 工具传递的参数中出现错误。

3

工具达到最大 LDAP 错误数。

4

该工具无法绑定到目录服务器实例。

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"
Copy to Clipboard Toggle word wrap

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      = ""
Copy to Clipboard Toggle word wrap

A.1.5.1. 生成 LDIF

ldclt 工具本身可用于生成可用于测试的 LDIF 文件。

注意

在生成 LDIF 文件时,ldclt 工具不会尝试连接到服务器或运行任何操作。

生成 LDIF 文件需要一个基本的模板文件,该工具用于创建条目(即对象),然后是指定的输出文件(-e genldif)。

模板文件可以为条目属性提供显式值,也可以使用变量。如果您希望简单的方式为条目属性提供唯一值,/usr/share/dirsrv/data 目录包含三个数据文件来生成生名、名字和组织单元。这些值列表可用于创建测试用户和目录树(dbgen-FamilyNamesdbgen-GivenNamesdbgen-OrgUnits )。这些文件可与 rndfromfileincrfromfileincrfromfilenoloop 选项一起使用。

模板文件的基本格式为:

# comment

attribute: string | variable=keyword(value)
Copy to Clipboard Toggle word wrap

变量可以是从 A 到 H 的任何字母。可能的关键字列在其中 表 A.4 “ldclt Template LDIF 文件关键字”

某些变量和关键字可以通过 -e 对象 选项和其他可用参数(如 rdn)传递。

-e object=inet.txt,rdn='uid:[A=INCRNNOLOOP(0;99999;5)]'
Copy to Clipboard Toggle word wrap
Expand
表 A.4. ldclt Template LDIF 文件关键字
关键字描述格式

RNDN

在指定范围(低 - high)和给定长度中生成一个随机值。

rNDN (low;high;length)

RNDFROMFILE

从指定文件中任何可用的值拉取一个随机值。

RNDFROMFILE(filename)

INCRN

在指定的范围内(低 - high)和给定长度创建连续值。

INCRN (低;high;length)

INCRNOLOOP

在指定的范围内(低 - high)和给定长度创建顺序值 - 而无需通过增量范围进行循环。

INCRNOLOOP (低;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)]
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

A.1.5.2. 添加条目

ldclt 工具可以添加与两个模板之一匹配的条目:

  • 个人
  • inetOrgPerson

-f 过滤器设置用户条目的 naming 属性格式。例如,-f "cn=MrXXXXX" 创建一个名称,如 -f "cn=Mr01234"。使用 personinetorgperson 参数 with -f 创建一个基本条目。

objectclass: person
sn: ex sn
cn: Mr01234
Copy to Clipboard Toggle word wrap

可以使用 rdn 参数和 目标文件 创建更复杂的条目(对于搜索和修改测试)。条目的完整选项范围包括在 第 A.1.5.1 节 “生成 LDIF” 中。rdnobject 参数提供在目录中添加或编辑条目的格式。rdn execution 参数采用关键字模式(如 表 A.4 “ldclt Template LDIF 文件关键字”中列出的),并从文本文件中列出的条目中提取其条目池。

-e rdn='uid:[A=INCRNNOLOOP(0;99999;5)]',object=inet.txt
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

add 操作也可用于构建目录树以进行更复杂的测试。每当条目添加到属于不存在的分支的目录中时,ldclt 工具会自动创建该分支条目。

注意

第一次添加条目的是不存在的分支的子条目时,分支条目将添加到目录中。但是,不会添加条目本身。后续条目将添加到新分支。

要自动添加分支条目,其命名属性必须是 cnoou

例 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
Copy to Clipboard Toggle word wrap

A.1.5.4. 修改操作

attreplace execution 参数替换条目中的特定属性。

修改操作使用 RDN 过滤器来搜索要更新的条目。rdnobject 参数提供在目录中添加或编辑条目的格式。rdn execution 参数采用关键字模式(如 表 A.4 “ldclt Template 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'
Copy to Clipboard Toggle word wrap

A.1.5.5. modrdn 操作

ldclt 命令支持两种类型的 modrdn 操作:

  • 重命名条目
  • 将条目移动到新父对象

ldclt 实用程序从随机选择的 DN 创建新条目名称或父项。

基本重命名操作需要三个执行参数:

  • rename
  • rdn='pattern'
  • object=file

rdnobject 参数提供在目录中添加或编辑条目的格式。rdn execution 参数采用关键字模式(如 表 A.4 “ldclt Template 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"
Copy to Clipboard Toggle word wrap

使用 withnewparent execution 参数重命名条目,并将其移到新的父条目下。如果父条目不存在,则 ldclt 工具会创建它。[3]

例 A.11. 将条目和鼠标重命名为一个新的 Parent

# 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"
Copy to Clipboard Toggle word wrap

A.1.5.6. 删除操作

ldclt delete 操作与 add 操作相反。与添加一样,删除操作可以通过几种不同方式删除条目:

  • 随机(即 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
Copy to Clipboard Toggle word wrap

基于 RDN 的删除使用带有关键字(如 表 A.4 “ldclt Template LDIF 文件关键字”中列出的)的 rdn execution 参数,并从文本文件中列出的条目池中提取其条目池。这个格式需要三个执行参数:

  • -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
Copy to Clipboard Toggle word wrap

最后一个删除操作格式与随机删除格式类似,它只通过给定范围移动,而不是随机移动:

  • -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
Copy to Clipboard Toggle word wrap

A.1.5.7. 绑定操作

默认情况下,每个 ldclt 线程绑定到服务器,然后在单个会话中运行所有操作。e bindeach 可用于任何其他操作,以指示 ldclt 工具绑定每个操作,然后在启动下一个操作前取消绑定。

-e add,bindeach ...
Copy to Clipboard Toggle word wrap

要只测试 bind 和 unbind 操作,请使用 -e bindeach,绑定 执行参数,且没有其他操作信息。例如:

# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -e bindeach,bindonly -e bind_info
Copy to Clipboard Toggle word wrap

bind 操作可以指定单个用户,通过在连接参数中使用 -D-w 用户 name-password 对。

注意

-e close 选项与 bind 参数一起使用,以测试丢弃连接在 Directory 服务器上具有的影响,而不是完全绑定。

例 A.15. 仅绑定和关闭测试

# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -e bindeach,bindonly,close
Copy to Clipboard Toggle word wrap

另外,还有执行参数,可用于从给定文件(randombinddnfromfile)中选择随机绑定身份(-e randombinddn,randombinddnlow=X,randombinddnhigh=Y)。

例 A.16. 来自文件中的身份的随机绑定

# ldclt -h localhost -p 389 -e bindeach,bindonly -e randombinddnfromfile=/tmp/testbind.txt
Copy to Clipboard Toggle word wrap

如果从生成的 LDIF 或使用 add 添加身份,则带有随机身份的绑定 很有用,其中帐户被添加到一个范围内。ldclt 工具可以使用 X 作为变量自动生成值,并通过指定的范围递增。

例 A.17. 来自 Random Base DN 的随机绑定

# ldclt -h localhost -p 389 -e bindeach,bindonly -D "uid=XXXXX,dc=example,dc=com" -w testXXXXX -e randombinddn,randombinddnlow=0,randombinddnhigh=99999
Copy to Clipboard Toggle word wrap

A.1.5.8. 在随机基本 DN 上运行操作

任何操作都可以针对随机选择的基本 DN 运行。trio of randombase 参数将组织单元的范围设置为从中选择。-b 基本条目中的变量设置基本 DN 的格式。

-b "ou=DeptXXX,dc=example,dc=com" -e randombase,randombaselow=0,randombasehigh=999 ...
Copy to Clipboard Toggle word wrap

A.1.5.9. TLS 身份验证

每个操作都可以通过 TLS 运行,以测试安全连接的安全身份验证和性能。TLS 身份验证需要两个参数。

  • 连接参数 -Z,它为目录服务器的安全数据库提供路径
  • 执行参数 cltcertname,keydbfile, 和 keydbpin,其中包含服务器将提示访问 TLS 数据库的信息

例如,这通过 TLS 运行绑定测试:

# ldclt -h host -p port -e bindeach,bindonly -Z certPath -e cltcertname=certName,keydbfile=filename,keydbpin=password
Copy to Clipboard Toggle word wrap

A.1.5.10. Abandon Operations

e abandon 参数 会打开,然后取消服务器上的操作。这可以自行运行,也可以使用其他类型的操作( 如添加esearch)。

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


[3] 与 add 操作一样,工具第一次引用父项时,会创建父条目,但不会 创建提示 add 操作的条目。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat