Ldap
如何過濾 ldapsearch 中以另一個相同名稱開頭的屬性?
在我公司的 ldap 中我們得到了兩個屬性,一個被呼叫
cryptodata
,另一個cryptodata;binary
當我執行 ldapsearch 命令並
cryptodata
結束命令以便僅按此屬性進行過濾時,它給我帶來了cryptodata
和cryptodata;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 中,您可以將所謂的描述添加到以分號分隔的屬性名稱。這些描述的解釋可能因描述而異。
因此cryptodata和cryptodata;binary不是不同的屬性!
實際上
;binary
只是一種傳輸類型,用於更改線上傳輸屬性時使用的編碼。今天,它的用途非常有限(參見RFC 4522),主要用於請求 PKI 證書屬性時。如果您的 LDAP 伺服器確實為cryptodata和cryptodata;binary返回了不同的屬性值,則您必須檢查哪個具有適合您的客戶端的正確編碼並在客戶端進行處理。不要編寫簡單的 shell 腳本。最好使用 Python/Perl/Ruby 之類的腳本語言和一個不錯的 LDAP 模組。