2016-12-06 9 views
0

나는 간단한 될 것으로 예상 뭔가를 주장하고 같은 변수 ....bash는 LDAP 검색 - 필터

난 다음, LDAP에서 사용자 관리자를 조회 매니저 이메일 및 SAM 이름을 싶어. 내가 다른 쿼리와 같은 프로그램을 실행할 때 이제

CN=manager,\ Surname 

: 나에게이 같은 CN을 제공

manager=$(/usr/bin/ldapsearch -LLL -H ldap://company.ads -x -D [email protected] -w password -b ou=employees,dc=company,dc=ads sAMAccountName=employee1 | grep "manager:" | awk '{gsub("manager: ", "");print}' | awk 'BEGIN {FS=","}; {print $1, $2 }') 

을 :

나는이 같은 LDAP에서 관리자의 CN을 얻을 수있을 것으로 예상 이 :

/usr/bin/ldapsearch -LLL -H ldap://company.ads -x -D [email protected] -w password -b ou=employees,dc=company,dc=ads $manager 

잘못된 검색 필터 (-7)가 나타나면 명령 복사를 에코하여 다시 실행하십시오.

필자는이 변형을 여러 번 시도했는데, 누락 된 부분을 누구나 볼 수 있습니까?

감사합니다.

답변

1

$manager에 공백이 있으므로 여러 개의 인수로 분할되지 않도록하려면 공백을 인용해야합니다.

/usr/bin/ldapsearch -LLL -H ldap://company.ads -x -D [email protected] -w password -b ou=employees,dc=company,dc=ads "$manager" 

일반적으로 변수를 단어로 분리하려는 경우가 아니면 일반적으로 항상 변수를 인용하는 것이 가장 좋습니다.

또한 LDAP 항목에서 백 슬래시 \을 제거해야합니다. 백 슬래시는 스크립트에서 리터럴 영역을 이스케이프 처리하기위한 것이며, 변수를 확장 할 때 처리되지 않으므로 데이터에 사용하면 안됩니다.

+0

Ive는 따옴표를 추가했지만 여전히 동일한 결과, 나쁜 검색 필터, 에코 및 과거의 결과를 얻습니다. 그것은 이것과 관련이 있어야하며, 어딘가에서 벗어나는 것은 나쁜 것입니다. –

+0

'$ manager'는 실제로 그 백 슬래시를 포함합니까? 변수를 확장 할 때는 백 슬래시가 처리되지 않으므로 문자 그대로 필터로 전송됩니다. – Barmar

+0

네, 변수에 있습니다, 광고에서 CN을 얻을 때 반환됩니다, 그래서 내 문제는 \? –