Как вы можете запустить поиск ldap, используя переменные и не фильтр? - PullRequest
0 голосов
/ 05 мая 2018
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

Я могу использовать свои переменные, только если фильтры заключены в двойные кавычки и я могу использовать нефильтр, только если они заключены в одинарные кавычки. Есть ли способ заставить это работать в том же запросе?

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

! - это специальный символ (он выполняет подстановку истории команд) в интерактивном режиме, но не в скрипте. Это должно быть что-то, что вы будете вводить в интерактивном режиме, или что-то встроенное в сценарий? Если последнее, вы можете просто использовать двойные кавычки, и ! не будет проблемой.

Если вы используете это в интерактивном режиме, есть несколько вариантов. Одним из них является смешивание режимов цитирования в одном аргументе, как в "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
                                                          ^^^^^^^^^^^^
0 голосов
/ 05 мая 2018

Фильтру ! нужны только одинарные кавычки из-за *, который оболочка будет пытаться раскрыть как подстановочный знак.

Решение: убежать от него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...