Назад | Перейти на главную страницу

Как я могу отфильтровать один атрибут в ldapsearch, который начинается с того же имени, что и другой?

В ldap моей компании у нас есть два атрибута, один называется cryptodata и другие cryptodata;binary

Когда я выполняю команду ldapsearch и помещаю cryptodata завершение команды для фильтрации только по этому атрибуту, это приносит мне оба cryptodata и cryptodata;binary атрибуты. Я хочу вернуть только cryptodata и нет cryptodata;binary . Как я могу это сделать ? Оба эти атрибута занимают много строк, поэтому использовать grep было бы неудобно.

Пример используемой мной команды, которая возвращает оба поля:

ldapsearch -h 0.0.0.0 -p 389 -D "cn=sysname,ou=whatever,o=ca,c=country" -b "CN=SOMEONE,OU=AUTHORITHY,OU=COMPANY,OU=TYPE,O=CA,C=COUNTRY" -w "password" dn cryptodata

обратите внимание, что оба поля не совпадают. Так что я не могу просто фильтровать по cryptodata;binary

Кроме того, это большая компания ldap, поэтому у меня нет управления структурой полей ldap.

В LDAP вы можете добавлять так называемые описания к именам атрибутов, разделенные точкой с запятой. Интерпретация этих описаний может варьироваться в зависимости от описания.

Таким образом криптоданные и криптоданные; двоичные не разные атрибуты!

Фактически ;binary - это просто тип передачи для изменения кодировки, используемой при передаче атрибута по сети. Сегодня он имеет очень ограниченное применение (см. RFC 4522) и в основном используется при запросе атрибутов сертификата PKI.

Если ваш сервер LDAP действительно возвращает разные значения атрибутов для криптоданные и криптоданные; двоичные вы должны проверить, какая кодировка подходит для вашего клиента, и работать с ней на стороне клиента. Не пишите простые сценарии оболочки. Лучше использовать для этого скриптовый язык вроде Python / Perl / Ruby и достойный модуль LDAP.