Как мне передать пароль 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 будет использовать все содержимое файла для пароля - это означает, что он БУДЕТ включать завершающий символ новой строки, если он существует. Чтобы проверить, действительно ли это ваша проблема, попробуйте создать файл без него:
echo -n ThisIsaBadPassword > .pass.txt
(ОБНОВИТЬ: Включен '-n')
Предполагая, что это возврат новой строки / каретки, попробуйте следующее:
cat .pass.txt | tr -d '\n\r' > .pass2.txt
Затем используйте файл .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) следующим образом:
echo -n 'mypassword' | ldapsearch -x -D <my dn> -y /dev/fd/0 -h server.x.x -b "dc=x,dc=y" "cn=*"