附录 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
可以设置自己的资源限值。有关管理系统资源限值的详情,请查看 ulimit
和 getrlimit
的 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 选项 复制链接链接已复制到粘贴板!
选项 | 描述 |
---|---|
-a max_pending_ops | 使用定义的最大待处理操作数,以异步模式运行该工具。 |
-b base_dn |
提供用于运行 LDAP 操作测试的基础 DN。如果未指定,则默认值为 |
-D bind_dn |
提供 |
-E max_errors | 设置工具退出前在测试 LDAP 操作中允许进行的最大错误数。默认值为 1000。 |
-e execution_params |
指定用于测试的操作和其他测试环境参数的类型。可能的值在 表 A.2 “执行参数” 中列出。 |
-f filter | 提供用于搜索测试的 LDAP 搜索过滤器。 |
-h |
指定要针对运行测试的 Directory 服务器的主机名或 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 机制。格式为 is * mech, SASL 身份验证机制 * authid,绑定到服务器的用户(Kerberos 主体) * authzid,一个代理授权(服务器忽略忽略,因为不支持代理授权) * secProp, 安全属性 * realm,Kerberos 域 * 标记
预期的值取决于支持的机制。该 [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"静默模式运行该工具。这会忽略 |
-q | 以静默模式运行工具。 |
-r number | 设置范围的高数字。 |
-r number | 设置范围的低数量。 |
-S consumer_name | 提供要连接以运行复制测试的使用者服务器的主机名。 |
-s scope |
提供搜索范围。与 |
-T ops_per_thread | 设置每个线程允许的最大操作数。 |
-T timeout | 为 LDAP 操作设置超时周期。默认值为 30 秒。 |
-V | 以非常详细的方式运行该工具。 |
-v | 以详细模式运行工具。 |
-W wait_time |
设置 |
-w password |
提供要使用的密码以及 |
-Z /path/to/cert.db | 为测试连接启用 TLS,并指向文件以用作证书数据库。 |
a -e
选项设置 ldclt
测试操作的执行参数。可以用逗号分隔列表配置多个参数。例如:
-e add,bindeach,genldif=/var/lib/dirsrv/slapd-instance/ldif/generated.ldif,inetOrgPerson
-e add,bindeach,genldif=/var/lib/dirsrv/slapd-instance/ldif/generated.ldif,inetOrgPerson
参数 | 描述 |
---|---|
abandon | 为异步搜索请求启动带头操作程序。 |
add |
向目录添加条目( |
附加 |
将条目附加到使用 |
ASCII | 生成 ASCII 7 位字符串。 |
attreplace=name:mask | 运行 修改操作,以替换现有条目中的属性(名称)。 |
attrlist=name:name:name | 指定要在搜索操作中返回的属性列表。 |
attrsonly=# | 与搜索操作一起使用,以设置是否读取属性值。可能的值有 0 (读取值)或 1 (不读取值)。 |
bindeach |
告知 |
bindonly |
告知 |
关闭 | 告知工具关闭连接,而不是执行 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 | 为随机生成器设置低值。 |
randombasehigh=value | 为随机生成器设置高值。 |
randombinddn |
告知 |
randombinddnfromfile=file |
告知 |
randombinddnlow=value | 为随机生成器设置低值。 |
randombinddnhigh=value | 为随机生成器设置高值。 |
rdn=attrname:value |
提供用作搜索过滤器的 RDN。这被使用,而不是 a |
referral=value | 设置操作的引用行为。有三个选项: on (allow referrals), off (disallow referrals)或 rebind (attempt to connect)。 |
smoothshutdown |
告知 |
字符串 |
告知 |
v2 |
告知 |
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
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[22774]: Average rate: 10298.20/thr (15447.30/sec), total: 154473
ldclt
每 15 分钟打印累积平均值和总值,以及工具退出的时间。
有些操作(如添加)和使用详细输出选项,如 -v
或 -V
输出额外数据到屏幕中。信息类型取决于操作类型,但它通常显示执行该操作的线程以及操作调用的插件。例如:
大多数错误都由 ldclt
处理,而不中断测试。遇到的任何致命错误都会使用工具的退出状态列出,并在累计总数中返回。
Global no error occurs during this session.
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 | 该工具无法绑定到目录服务器实例。 |
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 -e execution_parameters -h localhost -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com"
当 ldclt
运行时,它首先会输出该测试的所有配置参数。
A.1.5.1. 生成 LDIF 复制链接链接已复制到粘贴板!
ldclt
工具本身可用于生成可用于测试的 LDIF 文件。
在生成 LDIF 文件时,ldclt
工具不会尝试连接到服务器或运行任何操作。
生成 LDIF 文件需要一个基本的模板文件,该工具用于创建条目(即对象
),然后是指定的输出文件(-e genldif
)。
模板文件可以为条目属性提供显式值,也可以使用变量。如果您希望简单的方式为条目属性提供唯一值,/usr/share/dirsrv/data
目录包含三个数据文件来生成生名、名字和组织单元。这些值列表可用于创建测试用户和目录树(dbgen-FamilyNames
、dbgen-GivenNames
和 dbgen-OrgUnits
)。这些文件可与 rndfromfile
、incrfromfile
或 incrfromfilenoloop
选项一起使用。
模板文件的基本格式为:
comment
# comment
attribute: string | variable=keyword(value)
变量可以是从 A 到 H 的任何字母。可能的关键字列在其中 表 A.4 “ldclt Template LDIF 文件关键字”
某些变量和关键字可以通过 -e 对象
选项和其他可用参数(如 rdn
)传递。
-e object=inet.txt,rdn='uid:[A=INCRNNOLOOP(0;99999;5)]'
-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 (低;high;length) |
INCRFROMFILE | 通过通过指定文件中的值递增来创建值。 | INCRFROMFILE(filename) |
INCRFROMFILENOLOOP | 通过文件中的值递增来创建值,而不通过值进行循环。 | INCRFROMFILENOLOOP (filename) |
RNDS | 生成给定长度的随机值。 | RNDS(length) |
例如,此模板文件从 /usr/share/dirsrv/data
中的示例文件中提取名称,并动态构建其他属性。
例 A.1. 模板文件示例
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
# 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
参数 with -f
创建一个基本条目。
objectclass: person sn: ex sn cn: Mr01234
objectclass: person
sn: ex sn
cn: Mr01234
可以使用 rdn
参数和 目标文件
创建更复杂的条目(对于搜索和修改测试)。条目的完整选项范围包括在 第 A.1.5.1 节 “生成 LDIF” 中。rdn
和 object
参数提供在目录中添加或编辑条目的格式。rdn
execution 参数采用关键字模式(如 表 A.4 “ldclt Template LDIF 文件关键字”中列出的),并从文本文件中列出的条目中提取其条目池。
-e rdn='uid:[A=INCRNNOLOOP(0;99999;5)]',object=inet.txt
-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
# 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
# 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
# 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 -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
# 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
# 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
execution 参数采用关键字模式(如 表 A.4 “ldclt Template 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
# 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
和 object
参数提供在目录中添加或编辑条目的格式。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'
# 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
和 object
参数提供在目录中添加或编辑条目的格式。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"
# 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. 将条目和鼠标重命名为一个新的 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"
# 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 操作相反。与添加一样,删除操作可以通过几种不同方式删除条目:
-
随机(
即 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
# 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 文件关键字”中列出的)的 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
# 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
# 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
线程绑定到服务器,然后在单个会话中运行所有操作。e bindeach
可用于任何其他操作,以指示 ldclt
工具绑定每个操作,然后在启动下一个操作前取消绑定。
-e add,bindeach ...
-e add,bindeach ...
要只测试 bind 和 unbind 操作,请使用 -e bindeach,绑定
执行参数,且没有其他操作信息。例如:
ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -e bindeach,bindonly -e bind_info
# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -e bindeach,bindonly -e bind_info
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
# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -e bindeach,bindonly,close
另外,还有执行参数,可用于从给定文件(randombinddnfromfile
)中选择随机绑定身份(-e randombinddn,randombinddnlow=X,randombinddnhigh=Y
)。
例 A.16. 来自文件中的身份的随机绑定
ldclt -h localhost -p 389 -e bindeach,bindonly -e randombinddnfromfile=/tmp/testbind.txt
# ldclt -h localhost -p 389 -e bindeach,bindonly -e randombinddnfromfile=/tmp/testbind.txt
如果从生成的 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
# 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 运行。trio of randombase
参数将组织单元的范围设置为从中选择。-b
基本条目中的变量设置基本 DN 的格式。
-b "ou=DeptXXX,dc=example,dc=com" -e randombase,randombaselow=0,randombasehigh=999 ...
-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 运行绑定测试:
ldclt -h host -p port -e bindeach,bindonly -Z certPath -e cltcertname=certName,keydbfile=filename,keydbpin=password
# 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 参数
会打开,然后取消服务器上的操作。这可以自行运行,也可以使用其他类型的操作( 如添加
或 esearch
)。
ldclt -e abandon -h localhost -p 389 -D "cn=Directory Manager" -w secret -v -q -b "ou=people,dc=example,dc=com"
# ldclt -e abandon -h localhost -p 389 -D "cn=Directory Manager" -w secret -v -q -b "ou=people,dc=example,dc=com"