![]() |
BASH+Ldapsearch - поиск включенных и отключенных учетных записей
Всем привет!
Стоит задача: скриптом bash в определенных OU в домене искать отключенные и включенные учетные записи. Вот таким скриптом удалось выдернуть количество отключенных учеток. Поиск отключенных
echo "start"
EEC=$(ldapsearch -x -H ldap://192.168.1.110 -D 'test\admin' -w Qwerty1234 -b 'OU=IS,DC=test,DC=local' '(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))'| grep 'dn' | wc -l) echo "disabled accounts = "$EEC Никак теперь не пойму, как таким же способом найти только включенные учетки? Перед userAccountControl ставлю восклицательный знак, чтобы сделать отрицание NOT, и после этого скрипт не работает. поиск включенных
echo "start"
EEC=$(ldapsearch -x -H ldap://192.168.1.110 -D 'test\admin' -w Qwerty1234 -b 'OU=IS,DC=test,DC=local' '(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))'| grep 'dn' | wc -l) echo "disabled accounts = "$EEC Возвращается такой ответ: start ldap_search_ext: Bad search filter (-7) disabled accounts = 0 |
Решил вопрос. Надо отрицание тоже брать в скобки. Получилось в итоге так
поиск включенных
echo "start"
EEC=$(ldapsearch -x -H ldap://192.168.1.110 -D 'test\admin' -w Qwerty1234 -b 'OU=IS,DC=test,DC=local' '(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'| grep 'dn' | wc -l) echo "disabled accounts = "$EEC |
Помогите еще пожалуйста с поиском в разных OU. Нужно искать в нескольких OU и выводить в итоговый суммированный результат.
|
Попробовал сделать разными путями. Одно из решений - использовать конструкцию $((переменная+переменная2))
Сложение
echo "start"
EEC=$(ldapsearch -x -H ldap://192.168.1.110 -D 'test\admin' -w Qwerty1234 -b 'OU=IS,DC=test,DC=local' '(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'| grep 'dn' | wc -l) echo "disabled accounts = "$EEC echo "start2" EEC2=$(ldapsearch -x -H ldap://192.168.1.110 -D 'test\admin' -w Qwerty1234 -b 'OU=IS2,DC=test,DC=local' '(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'| grep 'dn' | wc -l) echo "disabled accounts = "$EEC2 res=$((EEC+EEC2)) echo $res Но это не работает - возвращается ошибка ")syntax error: invalid arithmetic operator (error token is " |
|
Цитата:
Поменял формат на Unix, удалил все лишние символы и все заработало. В итоге эти конструкции оказались рабочими: Первая конструкция res=$((EEC+EEC2)) echo $res Вторая конструкция res=$(($EEC+$EEC2)) echo $res |
Время: 12:24. |
Время: 12:24.
© OSzone.net 2001-