2016-08-02 62 views
2

ldapsearch(1)命令从LDAP服务器中检索对象,并将它们打印为LDIF结构,如下所示(不是实数据): dn: [email protected],dc=domain,dc=com objectclass: top objectclass: person mail: [email protected] userPassword:: hdfy74dhn79wdhyr74hy7489fhw46789f 如果一个属性包含非ASCII数据,则它是Base64编码的,由属性名称后双重::。另外,看起来userPassword的任何属性总是会被这样编码,即使它是ASCII干净的。如何从base64编码userPassword和其他属性停止ldapsearch(1)?

我想要做的就是告诉ldapsearch不要这样做。我一直无法找到一个选项标志来通过来抑制这种行为;仅重新编译LDAP_PASSWD_DEBUG已禁用的源。

是否有一个无证的选项来防止这种编码?

(撇开安全问题等,因为这是用于测试目的)

回答

2

短期重新编译的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

+1

我在这本书中找到http://www.perlmonks.org/bare/?node_id=963814略有不同的变化定义字符集: 'perl的-MMIME :: Base64的-MEncode =解码 - (-s +)/ decode(“UTF-8”,decode_base64($ 1))/ eg; print'' – sOliver