Tuesday, July 22nd, 2008...10:43 pm

Jak zapisać do katalogu wartości … duże wartości .. i jeszcze ze "znaczkami"

Jump to Comments

Jorge spytał się mnie dzisiaj jak zapisać w atrybucie obiektu wartość, która tak naprawdę jest zawartością plik XML. Chodziło mu o definicję szablonu CLM, która przechowywana jest jako łańcuch XML. Problemów w takim przypadku jest conajmniej dwa:

  • wartość atrybutu jest stosunkowo długa, co nie pozwala na użycie wprost narzędzi linii poleceń
  • wartośc ta zawiera różne znaki, między innymi końca linii itp.

Rozwiązanie jest stosunkowo proste i jest opisane w RFC opisującym format LDIF. LDIF pozwala na import danych zakodowanych przy pomocy Base64. W ten sposób, można importować do katalogu dane, zawierające znaki specjalne ,  wartości Unicode itp.

Jak zamienić wartość tekstową na Base64? Rozwiązań w sieci można znaleźć dużo, może tutaj się przydać narzędzie Base64Tool, które udostępnił Novell.

Mając więc wartość atrybutu "sn":

Nowak

w base64 dostajemy:

Tm93YWs=

Tak przygotowaną wartość można zaimportować używając następującej składni w pliku LDIF:

dn: CN=Jan Nowak,CN=Temp users,DC=W2k,DC=PL
changetype: modify
replace: sn
msClm-Data:: T255c3prbyA=

W składni LDIF należy zauważyć tylko następujące zmiany:

  • w linii, w której definiujemy nazwę atrybuty i jego wartość używamy dwóch dwukropków ‘::’ żeby oddzialić nazwę od wartości
  • jeżeli nasza wartość zakodowana w base64 ma wiele linii, na początku każdej z nich musi się znaleźć spacja.

I to w zasadzie tyle … pozostaje uruchomić LDIFDE -i -f …

Leave a Reply