LDAP基础:6:使用ldapsearch进行数据查询

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LDAP基础:6:使⽤ldapsearch进⾏数据查询
在前⾯的⽂章中,我们已经多次使⽤ldapsearch进⾏信息的查询,但都是⼀条命令查询出所有内容,这篇⽂章对于ldapsearch的常⽤⽅式进⾏进⼀步的解释和说明。

操作⽅式
执⾏场所
对LDAP进⾏操作,场所不限,LDAP服务器上进⾏操作,也可以在可以连接LDAP服务的客户端进⾏
使⽤命令
常⽤的数据的查询,可以使⽤ldapsearch
Option介绍
命令的Option就不再分命令来介绍,常⽤的Option的信息和⽤途整理如下:
Option说明
-H ldapuri,格式为ldap://机器名或者IP:端⼝号,不能与-h和-p同时使⽤
-h LDAP服务器IP或者可解析的hostname,与-p可结合使⽤,不能与-H同时使⽤
-p LDAP服务器端⼝号,与-h可结合使⽤,不能与-H同时使⽤
-x使⽤简单认证⽅式
-D所绑定的服务器的DN
-w绑定DN的密码,与-W⼆者选⼀
-W不输⼊密码,会交互式的提⽰⽤户输⼊密码,与-w⼆者选⼀
-f指定输⼊条件,在RFC 4515中有更详细的说明
-c出错后忽略当前错误继续执⾏,缺省情况下遇到错误即终⽌
-n模拟操作但并不实际执⾏,⽤于验证,常与-v⼀同使⽤进⾏问题定位
-v显⽰详细信息
-d显⽰debug信息,可设定级别
-s指定搜索范围, 可选值:base|one|sub|children
常见的查询
⽅式1: 指定ldapuri进⾏查询
使⽤⽰例:
ldapsearch -x -H ldap://192.168.31.242:389 -b dc=example,dc=org -D “cn=admin,dc=example,dc=org” -w admin
⽅式2: 指定hostname和端⼝号进⾏查询
使⽤⽰例:
ldapsearch -x -h 192.168.31.242 -p 389 -b dc=example,dc=org -D “cn=admin,dc=example,dc=org” -w admin
⽅式3: 指定过滤条件:按照dn进⾏过滤
可以通过dn进⾏过滤,因为dn能较为清晰的确定⼀条entry的信息,⽐如确认admin的详细,可以使⽤
使⽤⽰例:
ldapsearch -x -H ldap://192.168.31.242:389 -b cn=admin,dc=example,dc=org -D “cn=admin,dc=example,dc=org” -w admin
执⾏⽇志
liumiaocn:openldap liumiao$ ldapsearch -x -H ldap://192.168.31.242:389 -b cn=admin,dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin # extended LDIF
#
# LDAPv3
# base <cn=admin,dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# admin,
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9TE5GaU0rZVZXNGlRR3FDdzQ5UzRMNjRlb2xjMjY5OU4=
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
同样查询上⽂中⽣成的People的这样⼀个部门的话,可以使⽤这样的语句:
liumiaocn:openldap liumiao$ ldapsearch -x -H ldap://192.168.31.242:389 -b ou=people,dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin # extended LDIF
#
# LDAPv3
# base <ou=people,dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# People,
dn: ou=People,dc=example,dc=org
objectClass: top
objectClass: organizationalUnit
ou: People
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
⽅式4: 使⽤模糊匹配
⽐如我们创建了People和Servers这两个ou,我们可以使⽤ou=*来⼀下查询出当前根下的ou的信息,⽐如可以使⽤如下的命令:
# base <dc=example,dc=org> with scope subtree
# filter: ou=*
# requesting: ALL
#
# People,
dn: ou=People,dc=example,dc=org
objectClass: top
objectClass: organizationalUnit
ou: People
# Servers,
dn: ou=Servers,dc=example,dc=org
objectClass: top
objectClass: organizationalUnit
ou: Servers
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
liumiaocn:openldap liumiao$
常⽤的⽅式还可以使⽤cn=*或者cn=admin这样进⾏指定信息进⾏过滤
# base <dc=example,dc=org> with scope subtree
# filter: cn=*
# requesting: ALL
#
# admin,
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9TE5GaU0rZVZXNGlRR3FDdzQ5UzRMNjRlb2xjMjY5OU4=
# Barbara Jensen,
dn: cn=Barbara Jensen,dc=example,dc=org
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
title: the world's most famous mythical manager
mail: bjensen@
uid: bjensen
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin "cn=admin"
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: cn=admin
# requesting: ALL
#
# admin,
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9TE5GaU0rZVZXNGlRR3FDdzQ5UzRMNjRlb2xjMjY5OU4=
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
当然这⾥只是给出了⼏个⾮常简单的使⽤例⼦进⾏过滤,可以结合>和<以及~匹配查找等⽅式实现更加快速和便捷地定位。

⽅式5: 指定返回信息
另外⽐较常⽤的⼀种⽅式类似与在SQL中写Select,我们可以指定返回的字段信息以及排序,在实际的集成中也是⾮常的有⽤,⽐如,我们只返回创建的uid的mail/uid/title/cn/sn,并按照我们期待的⽅式进⾏返回,具体使⽤⽰例如下:
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin "uid=*" sn cn titl e mail uid
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: uid=*
# requesting: sn cn title mail uid
#
# Barbara Jensen,
dn: cn=Barbara Jensen,dc=example,dc=org
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
title: the world's most famous mythical manager
mail: bjensen@
uid: bjensen
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
总结
这篇⽂章整理了⼀些ldapsearch常⽤的查询⽅式,当然实际使⽤的时候远远不⽌这些,但是掌握了这些,对于⼊门级的选⼿来说,简单的确认和定位应该会⾮常有⽤。

相关文档
最新文档