четверг, 19 мая 2011 г.

Как сравнить пользователей в LDAP по членству в группах.

Пример скрипта на BASH. Запрос к серверу LDAP (eDir 8.7 атрибут groupMembership)
Выбирается список групп для первого и второго пользователя, нет проверки на дублирующиеся имена (считаем все имена пользователей уникальны)
Запуск: имя_скрипта имя_1_пользователя имя_2_пользователя

#!/bin/bash
#
# Запросы к LDAP серверу
#
if [ -z $1 ];then
echo
echo $"Usage: $0 имя_пользователя_1 имя_пользователя_2 "

exit 1
fi
if [ -z $2 ];then
echo
echo $"Usage: $0 имя_пользователя_1 имя_пользователя_2 "

exit 1
fi

#ldapsearch -h 192.168.30.5 -x -b o=farm -s sub '(cn=alex)' groupMembership | grep '^groupMembership' | awk '{print($2)}' | sort

ldapsearch -h 192.168.30.5 -x -b o=farm -s sub "(cn=$1)" groupMembership | grep '^groupMembership' | awk '{print($2)}' | sort > user_group_$1
ldapsearch -h 192.168.30.5 -x -b o=farm -s sub "(cn=$2)" groupMembership | grep '^groupMembership' | awk '{print($2)}' | sort > user_group_$2

cat user_group_$1 user_group_$2 | sort | uniq -c | grep '2' | awk '{print($2)}' > tmp_equal
echo "группы членами которых являются $1 и $2 "
cat tmp_equal
echo "Группы членом в которых состоит $2, но не состоит $1"
cat user_group_$2 tmp_equal | sort | uniq -c | grep '1' | awk '{print($2)}'
echo "Группы членом в которых состоит $1, но не состоит $2"
cat user_group_$1 tmp_equal | sort | uniq -c | grep '1' | awk '{print($2)}'

Комментариев нет:

Отправить комментарий