Ldap

如何過濾 ldapsearch 中以另一個相同名稱開頭的屬性?

  • June 26, 2019

在我公司的 ldap 中我們得到了兩個屬性,一個被呼叫cryptodata,另一個cryptodata;binary

當我執行 ldapsearch 命令並cryptodata結束命令以便僅按此屬性進行過濾時,它給我帶來了cryptodatacryptodata;binary屬性。我希望它只返回cryptodata而不是返回cryptodata;binary。我怎樣才能做到這一點 ?這兩個屬性都有很多行,所以 grep 使用起來很麻煩。

我使用的返回兩個欄位的命令範例:

ldapsearch -h 0.0.0.0 -p 389 -D "cn=sysname,ou=whatever,o=ca,c=country" -b "CN=SOMEONE,OU=AUTHORITHY,OU=COMPANY,OU=TYPE,O=CA,C=COUNTRY" -w "password" dn cryptodata

請注意,這兩個欄位不相同。所以我不能只過濾cryptodata;binary

這也是一家大公司 ldap,所以我沒有管理 ldap 欄位結構。

在 LDAP 中,您可以將所謂的描述添加到以分號分隔的屬性名稱。這些描述的解釋可能因描述而異。

因此cryptodatacryptodata;binary不是不同的屬性!

實際上;binary只是一種傳輸類型,用於更改線上傳輸屬性時使用的編碼。今天,它的用途非常有限(參見RFC 4522),主要用於請求 PKI 證書屬性時。

如果您的 LDAP 伺服器確實為cryptodatacryptodata;binary返回了不同的屬性值,則您必須檢查哪個具有適合您的客戶端的正確編碼並在客戶端進行處理。不要編寫簡單的 shell 腳本。最好使用 Python/Perl/Ruby 之類的腳本語言和一個不錯的 LDAP 模組。

引用自:https://serverfault.com/questions/973025