使用负参数进行Ldap搜索

时间:2015-05-18 14:17:28

标签: bash ldap

我正在尝试在我的LDAP基础上进行搜索:

ldapsearch  -x -h localhost -p 389 -D uid=xxxadmin,ou=administrators,ou=topologymanagement,o=netscaperoot -v -w 12345 -b "ou=Usuarios,ou=Alunos,ou=XXXX,o=xxXXXxx" -f (!(objectClass=ntUser)) 1.1

基本上我想列出没有objectClass ntUser的所有条目,并将objectClass添加到它们。

我将此作为答案:

-bash: !: event not found

3 个答案:

答案 0 :(得分:2)

来自http://www.openldap.org/lists/openldap-software/200104/msg00196.html

  

此消息来自shell(bash)。它说明了命令   `&#39!;没有找到你无意中要求的事件。有时候是这样的   因为bash中的双引号不会阻止某些命令   调用。改为使用单引号:

您的搜索应该是这样的:

ldapsearch  -x -h localhost -p 389 -D 'uid=xxxadmin,ou=administrators,ou=topologymanagement,o=netscaperoot' -v -w 12345 -b 'ou=Usuarios,ou=Alunos,ou=XXXX,o=xxXXXxx' -f '(!(objectClass=ntUser))' 1.1

答案 1 :(得分:0)

您的搜索应该有效。但是,对于bash,您需要引用参数。

类似的东西:

ldapsearch  -x -h localhost -p 389 -D uid=xxxadmin,ou=administrators,ou=topologymanagement,o=netscaperoot -v -w 12345 -b "ou=Usuarios,ou=Alunos,ou=XXXX,o=xxXXXxx" -f "(!(objectClass=ntUser))" 1.1

测试了openLDAP

@(#) $OpenLDAP: ldapsearch  (Ubuntu) (Mar 17 2014 21:19:27) $buildd@aatxe:/build/buildd/openldap-2.4.31/debian/build/clients/tools
(LDAP library: OpenLDAP 20431)

ldapsearch -x -h localhost -p 389 -D "cn=admin" -W -b "dc=example,dc=com" -s sub -a always -z 1000 "(!(objectClass=inetOrgPerson))" "objectClass"

和OpenDJ

ldapsearch --version
        OpenDJ 2.7.0-20140727
        Build 20140727000040Z

ldapsearch -h localhost -p 389 -D "cn=admin" -b "dc=example,dc=com" -s sub -a always -z 1000 "(!(objectClass=inetOrgPerson))" "objectClass"

-Jim

答案 2 :(得分:0)

它的发生是因为bash认为!作为一个特殊的角色

  

“!”开始历史记录替换,除非后跟空格,制表符,行尾,'='或'('

最后,您应该能够通过在术语周围加上单引号来解决您的问题,如下所示:

ldapsearch  -x -h localhost -p 389 -D uid=xxxadmin,ou=administrators,ou=topologymanagement,o=netscaperoot -v -w 12345 -b "ou=Usuarios,ou=Alunos,ou=XXXX,o=xxXXXxx" -f '(!(objectClass=ntUser))' 1.1

请参阅stackoverflow上的以下问题。

Which characters need to be escaped in Bash? How do we know it?