Как я должен передать пароль для ldapsearch
использования -y <password file>
опции?
Если я напишу пароль в файле паролей в виде простого текста, я получу эту ошибку:
ldap_bind: Invalid credentials (49)
additional info: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 52e, v1772
То же самое происходит, если я использую эту -w <password>
опцию.
РЕДАКТИРОВАТЬ :
команда, которую я бегу
ldapsearch -x -D <my dn> -y .pass.txt -h server.x.x -b "dc=x,dc=y" "cn=*"
Где файл .pass.txt
содержит мой пароль, в виде простого текста. И DN, и пароль верны. Если я запускаю команду с этой -W
опцией и набираю пароль в командной строке, команда запускается успешно, но я бы хотел как-то сохранить пароль для создания сценария.
Ответы:
Имейте в виду, что ldapsearch будет использовать все содержимое файла для пароля - это означает, что он будет содержать завершающий символ новой строки, если он существует. Чтобы проверить, действительно ли это ваша проблема, попробуйте создать файл без него:
( ОБНОВЛЕНИЕ : Включено '-n')
источник
echo -n
илиprintf
во избежание новой строки.sed
для удаления конца существующего файла, хотя.Предполагая, что это перевод строки / каретки, попробуйте следующее:
Затем используйте файл .pass2.txt. Вы всегда можете проверить наличие новых строк и возврат каретки,
cat -vE
и они будут отображаться как $ и ^ M соответственно.Вы также можете сделать это
-y <(cat .pass.txt | tr -d '\n\r')
непосредственно в команде ldapsearch.источник
ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass.txt -H ldap://ldap.domain.com -b dc=domain,dc=com
Возможно, вам придется chmod 600 pass.txt
источник
Нет необходимости сбрасывать пароль в реальный файл. Просто передайте его с флагом -n, чтобы предотвратить символ новой строки, затем прочитайте его из дескриптора файла STDIN (/ dev / fd / 0) следующим образом:
источник