使用变量 bash 自动化 ldapsearch
Automating ldapsearch with bash using variables
我像这样执行 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)
错误...
这里有问题的部分是 PASSWD 替换。其他两个替换工作正常。
我在 VirtualBox 上使用 CentOS7。
密码不包含特殊字符。
我在这里错过了什么?
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'`
它奏效了。
你可以使用
echo -n "这里是密码" > password_file
或者,设置为环境变量
读取-s“密码”
read -s -p "password:" 密码
密码:在此输入密码
echo -n $密码| ldapsearch -LLL -D cn=whatever,o=whateverelse -y /dev/stdin
我像这样执行 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)
错误... 这里有问题的部分是 PASSWD 替换。其他两个替换工作正常。
我在 VirtualBox 上使用 CentOS7。 密码不包含特殊字符。
我在这里错过了什么?
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'`
它奏效了。
你可以使用 echo -n "这里是密码" > password_file
或者,设置为环境变量
读取-s“密码” read -s -p "password:" 密码 密码:在此输入密码 echo -n $密码| ldapsearch -LLL -D cn=whatever,o=whateverelse -y /dev/stdin