Bash脚本中传递LDAP密码变量时身份验证失败问题排查
问题解决:ldapsearch传递变量密码时的无效凭据错误
你的问题出在变量引用的引号使用错误:脚本中-w '$LDAP_PASSWORD'用了单引号,Bash会将单引号内的内容原样输出,不会解析$LDAP_PASSWORD变量,导致ldapsearch接收到的不是真实密码,而是字符串$LDAP_PASSWORD,这才触发了“无效凭据”错误。
修正后的脚本
将单引号替换为双引号,让Bash正确解析变量:
#!/bin/bash # Use jq to extract the password from the JSON output LDAP_PASSWORD=$(aws secretsmanager get-secret-value --secret-id SECRET_ID --query SecretString --output text --profile PROFILE1 | jq -r '.["KEY"]') ldapsearch -x -H ldap://10.91.10.10 -D ldap.query@at.prod.mango.local -w "$LDAP_PASSWORD" -b "OU=mango,DC=at,DC=prod,DC=mango,DC=local" "(objectClass=computer)" cn
补充说明
- 双引号在Bash中会解析变量,同时保留变量内容里的特殊字符(比如你的示例密码
)AB#2Mn!5!1a中的括号、感叹号、井号)作为一个整体传递给ldapsearch,避免被Shell拆分或转义。 - 如果密码包含双引号这类极端特殊字符,也可以直接去掉引号写成
-w $LDAP_PASSWORD,但双引号的方式兼容性更强,是更稳妥的选择。
内容的提问来源于stack exchange,提问作者zexapod
相关产品推荐
相关产品推荐

