검색 범위/필터에 느낌표 "!"와 별표 "*"가 포함된 LDAP 검색 bash 스크립트를 작성했습니다. 이와 같은 것 및 스크립트는 큰따옴표 사이의 문자열을 올바르게 읽지 못합니다. 명령줄에 전달하면 동일한 필터가 제대로 작동합니다.
"(&(objectclass=*)(uid=*)("\!"(roles=*)))"
다음은 bash 스크립트에서 실행되는 전체 ldapsearch 쿼리입니다.
ldapsearch -h localhost -p 389 -D "cn=ldapadm,o=proxy" -W - -b "ou=users,o=org" -s sub -LLL "(&(objectclass=*)(uid=*)("\!"(roles=*)))" | grep dn:
답변1
큰따옴표 안의 내용은 쉘에 의해 삽입되고 별표나 느낌표는 특정한 의미를 갖기 때문에 작은따옴표를 사용하십시오.
-LLL '(&(objectclass=*)(uid=*)("\!"(roles=*)))'
내부 큰따옴표가 필요한지 잘 모르겠고 이를 제거해야 할 수도 있으므로 실제로 구문은 다음과 같아야 합니다.
-LLL '(&(objectclass=*)(uid=*)(!(roles=*)))'