Я получаю список всех пользователей LDAP, используя следующую команду ldapsearch -x -LLL uid=* > result
.
Результат следующей команды будет иметь следующий формат
dn: uid=shahrukh,ou=People,dc=example,dc=com
uid: shahrukh
cn: shahrukh
sn: shahrukh
loginShell: /bin/bash
uidNumber: 1086
gidNumber: 1086
homeDirectory: /home/ldap/shahrukh
Есть полный список этих записей.
Я хочу перечислить все uid в один файл, чтобы было указано только значение uid.
shahrukh
abc
xyz
....
....
....
Вы можете указать атрибуты после вашего фильтра, и он будет отображать только эти атрибуты.
Например.:
ldapsearch -x -LLL uid=* uid > result
Это может дать вам кучу uid: 12345
линий. Тогда вам, возможно, придется пропустить его через sed
чтобы удалить то, что вам не нужно. (В качестве альтернативы, если вы сделаете это с помощью perl
и Net::LDAP
вы можете извлечь именно то, что хотите, но я думаю ldapsearch
+ sed
- путь наименьшего сопротивления).
Самый простой способ - передать результаты в grep, а затем вырезать. Пример
ldapsearch -x -LLL uid=* | grep uid: | cut -d: -f2 > results