linux - 如何使用变量和 not 过滤器运行 LDAP 搜索?

标签 linux bash ldap

ldapsearch -h 1.0.24.24 -p 389 -x -t -LLL -S cn -D 
cn=user,ou=resources,o=otherresource,c=xx -w server101 -b ou=Non-
Staff,ou=people,o=test,c=us '(&(objectClass=inetOrgPerson)
(createTimestamp<=$month_8)(!(nEApps=*))(nEDHHSNFAccNbr=\00)
(nECreatedBy=cioSelfRegistered)(loginTime<=$month_3))' dn

如果过滤器用双引号引起来,我只能使用我的变量 如果它们被单引号括起来,我只能使用 not 过滤器,有没有办法在同一个查询中使其工作?

最佳答案

! 在交互模式下是一个特殊字符(它执行命令历史替换),但在脚本中则不是。这应该是您以交互方式输入的内容,还是嵌入脚本中的内容?如果是后者,您可以只使用双引号,并且 ! 不会成为问题。

如果您以交互方式使用此功能,则有多种选择。一种是在单个参数中混合引用模式,如"double-quoted-section"'single-quoted-section'"another-quoted-section"。这看起来很奇怪,但效果很好。像这样的事情:

ldapsearch -h 1.0.24.24 -p 389 -x -t -LLL -S cn \
-D cn=user,ou=resources,o=otherresource,c=xx -w server101 \
-b ou=Non-Staff,ou=people,o=test,c=us \
"(&(objectClass=inetOrgPerson)(createTimestamp<=$month_8)("'!'"(nEApps=*))(nEDHHSNFAccNbr=\00)(nECreatedBy=cioSelfRegistered)(loginTime<=$month_3))" dn
                                                          ^^^^^

或者,您可以将变量定义为 ! (使用单引号),然后在双引号内使用该变量:

exclamation='!'
ldapsearch -h 1.0.24.24 -p 389 -x -t -LLL -S cn \
-D cn=user,ou=resources,o=otherresource,c=xx -w server101 \
-b ou=Non-Staff,ou=people,o=test,c=us \
"(&(objectClass=inetOrgPerson)(createTimestamp<=$month_8)($exclamation(nEApps=*))(nEDHHSNFAccNbr=\00)(nECreatedBy=cioSelfRegistered)(loginTime<=$month_3))" dn
                                                          ^^^^^^^^^^^^

关于linux - 如何使用变量和 not 过滤器运行 LDAP 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183203/

相关文章:

linux - Elementary OS (linux) 上的 Vim 中的 CTRL-V 映射为粘贴而不是阻止视觉模式

linux - 脚本不会在使用 init 启动时启动

linux - 如何在 Linux 后台终止作业调度程序?

linux - 使用 shell 脚本查找文件并将其移动到适当的目录

ssh - SSH + Radius + LDAP

linux - CentOS 6 和 RHEL 6 上 linux 用户名的真正规则是什么?

bash - 在 Windows 7 的 cygwin 中运行 bash 脚本

c++ - 无法通过 SSL 将示例程序绑定(bind)到 LDAP 服务器(ldaps ://)

python - 如何使用 Python 将用户移动到不同的 OU

linux - 如何将第一列中的文本附加到所有列 linux