2013-08-13 2 views
3

특정 사용자가 그룹에 존재할 경우 삭제하는 데 사용할 bash 스크립트가 있습니다.LDAP 항목을 검색하는 Bash 스크립트

먼저 모든 그룹 이름을 추출하여 파일에 저장했습니다. 다음 단계로 파일을 구문 분석하고 모든 항목에 대해 ldapsearch 명령을 사용하고 사용자를 grep하고 존재하는 경우 ldapmodify를 사용하여 삭제해야한다고 생각했습니다.

내 질문은, 조건 경우 작성하는 방법이다 즉 if [ *ldapsearch query* == True];then

이 내의 ldapsearch의 모습이며, while 루프 내부의 첫 번째 줄은 if 문이 될 것입니다.

while read grp;do 
     ldapsearch -w 'ldappass' -D "cn=adminuser,dc=some-domain,dc=com" -b "cn=$grp,ou=group,dc=some-domain,dc=com" | grep $someuser 
done</home/someuser/tempfile.txt 

CLI에서이 ldapsearch 쿼리는 다음 출력을 반환합니다. if 문이 어떤 값을 반환하는 경우

memberUid: testuser

그래서 본질적으로, (사용자가 존재 즉), 그때 사용자를 삭제해야합니다. 올바른 if 문을 가져 와서 ldapsearch 쿼리에 대해 참 또는 거짓 결과를 얻으려면 어떻게해야합니까?

답변

3

문자열이 비어 있는지 확인하는 -z 옵션을 사용할 수 있습니다. [ -z "$string" ]은 문자열이 비어 있으면 true입니다. 그런 다음이 그것을 할 수 있습니다 : 모두 함께

if [ ! -z "$(ls)" ]; then 
    echo "there is something" 
else 
    echo "this dir is empty" 
fi 

: 디렉토리가 비어있는 경우 우리가 확인하고 싶은 말은 예를 들어

if [ ! -z "$(yourcommand)" ]; then 
    do_things 
fi 

while IFS= read -r grp;do 
    if [ ! -z "$(ldapsearch -w 'ldappass' -D "cn=adminuser,dc=some-domain,dc=com" -b "cn=$grp,ou=group,dc=some-domain,dc=com" | grep $someuser)" ]; then 
     remove $someuser 
    fi 
done < /home/someuser/tempfile.txt 
+1

감사합니다 .. 그것은했다. 그리고 오늘 뭔가 새로운 것을 배우지. – rahuL

관련 문제