2016-08-02 44 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