Автоматизация ldapsearch с bash с использованием переменных - PullRequest
0 голосов
/ 20 февраля 2020

Я выполняю ldapsearch наподобие

ldapsearch -D "cn=ldapadm,dc=test,dc=com" -w ldappasswd -b "dc=test,dc=com" objectclass=*

, и он отлично работает.

Теперь я хочу заменить ввод переменными:

BASEDN="cn=ldapadm,dc=test,dc=com"
PASSWD="ldappasswd"
BINDDN="dc=test,dc=com"

ldapsearch -D "${BASEDN}" -w "${PASSWD}" -b "${BINDDN}" objectclass=*

Но я получаю

ldap_bind: Invalid credentials (49)

ошибка ... Проблемной частью c здесь является подстановка PASSWD. Две другие замены работают нормально.

Я использую CentOS7 на VirtualBox. Пароль не содержит специальных символов.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 20 февраля 2020
set -x; ldapsearch -D "${BASEDN}" -w "${PASSWD}" -b "${BINDDN}" objectclass=*

выявил проблему. Я загрузил значения из файла, и в конце каждой строки был невидимый разрыв строки.

Вывод:

ldapsearch -D cn=ldapadm,dc=test,dc=com\r -w ldappasswd\r -b dc=test,dc=com\r objectclass=*

Я удалил \ r, вызвав

PASSWD=`echo "${value_from_file}"| sed 's/\\r//g'`

и это сработало.

...