Scripting kdb5_ldap_util:尝试将密码的回显传递到命令中总是返回无效凭据

Scripting kdb5_ldap_util:尝试将密码的回显传递到命令中总是返回无效凭据,scripting,kerberos,openldap,Scripting,Kerberos,Openldap,我一直在尝试在docker compose构建中使用OpenLDAP后端设置自动配置MIT Kerberos 5,现在我需要在LDAP层次结构中创建Kerberos容器。我需要对kerberos服务器中的ldap服务器使用kdb_ldap_util命令 目前,我可以手动执行此操作。使用命令 kdb5_ldap_util -D cn=admin,dc=denodocompose,dc=org create -subtrees dc=denodocompose,dc=org -r DENODOCOM

我一直在尝试在docker compose构建中使用OpenLDAP后端设置自动配置MIT Kerberos 5,现在我需要在LDAP层次结构中创建Kerberos容器。我需要对kerberos服务器中的ldap服务器使用kdb_ldap_util命令

目前,我可以手动执行此操作。使用命令

kdb5_ldap_util -D cn=admin,dc=denodocompose,dc=org create -subtrees dc=denodocompose,dc=org -r DENODOCOMPOSE.ORG -s -H ldap://ldap.denodocompose.org
这将提示输入3个密码和kerberos容器dn

我需要将其作为shell脚本的一部分来执行,以引导数据库创建,但无论我尝试了什么组合,当我尝试在没有人工交互的情况下提供密码时,在尝试绑定到LDAP服务器时,我总是会遇到“无效凭据”或类似“无法读取密码”的错误。我正在尝试通过管道输入回音来提供密码,并尝试了以下组合:

echo changeit | kdb5_ldap_util... //results in 'cannot read' error
echo {'changeit'} //results in invalid credentials on the bind, along with the rest of these
echo -n {'changeit'}
echo -n {"changeit"}
echo -n -e {'changeit\n'}
echo -n -e {"changeit\n"}
echo -e {'changeit\n'}
echo -e {"changeit\n"}
一旦我找到了传递绑定密码的正确语法,我很有信心我可以为其余的提示复制该语法,但是每次第一个提示都会失败,凭据对于所提供的dn无效,当手动执行命令时,它也会完美地工作。任何帮助都将不胜感激

编辑:找到正确的语法:

{ echo -n -e 'changeit\n'; echo -n -e 'changeit\n'; echo -n -e 'changeit\n'; echo -n -e 'cn=krbContainer,dc=denodocompose,dc=org\n';} | kdb5_ldap_util -D cn=admin,dc=denodocompose,dc=org create -subtrees dc=denodocompose,dc=org -r DENODOCOMPOSE.ORG -s -H ldap://ldap.denodocompose.org

尝试使用文件提供密码会导致相同的无法读取错误,其全文为“kdb5_ldap_util:从键盘读取主密钥时无法读取密码”