该ldapsearch(1)命令从LDAP服务器检索对象,并将它们打印为LDIF结构,如下所示(不是真实数据):
 
dn: mail=foo@domain.com,dc=domain,dc=com
objectclass: top
objectclass: person
mail: foo@domain.com
userPassword:: hdfy74dhn79wdhyr74hy7489fhw46789f
如果属性包含非ASCII数据,则它是Base64编码的,由::属性名称后的双精度表示。此外,似乎所有被调用的属性userPassword都将始终如此编码,即使它是ASCII干净的也是如此。
我想做的就是告诉ldapsearch不要这样做。我无法找到要传递的选项标志来抑制此行为;仅在LDAP_PASSWD_DEBUG禁用的情况下重新编译源代码。
是否有未公开的选项来防止这种编码?
(不考虑安全性等,因为这是出于测试目的)
缺少重新编译ldapsearch的方法,似乎没有办法使用简单的标志来做到这一点。
但是,您可以创建这样的shell别名,如果您安装了Perl MIME :: Base64模块,则将具有相同的效果。
myldapsearch()
{
ldapsearch $* | perl -MMIME::Base64 -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode_base64($1)/eg;print'
}
alias ldapsearch=myldapsearch