Конвертировать CSV в LDIF для импорта в ldap? - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть база данных MSSQL с 13k пользователей в таблице с заголовками, такими как имя пользователя, пароль, имя_файла, lname и т. Д. Я хотел бы иметь возможность превратить эти данные в надлежащий сервер ldap.

В настоящее времяЯ сделал следующее: Создаю задание на сервере mssql для ежечасного экспорта этой таблицы в CSV.Запрос запрашивает имя пользователя, пароль, имя, фамилию и memberid.ежечасно передавайте эти данные на мой linux-сервер ldap.

Может кто-нибудь порекомендовать метод превращения этого csv в ldif, чтобы я мог запустить ldapmodify и поместить все эти записи в мой ldap-сервер?Я предполагаю, что могу написать парсер, но хотелось бы знать, есть ли уже продукт, который может выполнять преобразование csv в ldif таким образом, и имеет ли этот план какой-либо смысл или есть ли лучший способ сделать это?Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2015

На тот случай, если кто-то все еще ищет что-то подобное, я создал скрипт autoit для преобразования данного CSV-файла в LDIF:

;###########################################################################################
;##### Load requirements
#include <File.au3>

;###########################################################################################
;####       Start the app

LDIF_Converter()


;###########################################################################################
;####       App function
Func LDIF_Converter()
    TrayTip("CSV2LDIF Converter","Konvertierung gestartet...",2000,1)

    Local $file = "import_ADS.ldif", $contacts = 0, $sFilePath = "3CXImport.csv"
    ; Remote old file
    FileDelete($file);
    ; Write Header
    FileWrite($file,"#Base structure for each person");
    Filewrite($file,@crlf)
    FileWrite($file,"dn: ou=Telefonbuch,dc=example,dc=com");
    Filewrite($file,@crlf)
    FileWrite($file,"ou: Telefonbuch");
    Filewrite($file,@crlf)
    FileWrite($file,"objectClass: organizationalUnit");
    Filewrite($file,@crlf)
    FileWrite($file,"objectClass: top");
    Filewrite($file,@crlf)
    Filewrite($file,@crlf)

    ; Read out CSV File
    _FileReadToArray($sFilePath, $contacts, $FRTA_NOCOUNT, ";")

    ; Write to File for each contact
    For $i = 0 To UBound ($contacts) - 1
        ; Clear contact cache
        $cache = ""
        ; Write object ID & comman attributes
        $cache = $cache & "dn: uid="&$i+1&",ou=Telefonbuch,dc=example,dc=com" & @CRLF
        $cache = $cache & "objectClass: inetOrgPerson" & @CRLF
        $cache = $cache & "objectClass: organizationalPerson" & @CRLF
        $cache = $cache & "objectClass: person" & @CRLF
        $cache = $cache & "objectClass: top" & @CRLF

        ; Check if company or person and set the corresponding CN
        if $contacts[$i][1] == "" Then
            $cn = $contacts[$i][0]
        Else
            $cn = $contacts[$i][1] & " " & $contacts[$i][2]
        EndIf

        ; Write common name
        $cache = $cache & "cn: "&$cn & @CRLF
        if $contacts[$i][1] == "" Then
            $sn = $contacts[$i][0]
        Else
            $sn = $contacts[$i][1] & " " & $contacts[$i][2]
        EndIf

        ; Write lastname/company
        $cache = $cache & "sn: "&$sn & @CRLF

        ; Write mobile number
        $mobile = StringRegExpReplace($contacts[$i][5],'[a-zA-Z;\\/:.,*?\"<>|& ]',"")
        if $mobile <> "" And $mobile <> " " Then
            $cache = $cache & "mobile: "& $mobile & @CRLF
        EndIf

        ; Write organisation
        if $contacts[$i][0] <> "" Then
            $cache = $cache & "o: "&$contacts[$i][0] & @CRLF
        EndIf

        ; Write telephone number
        $phone = StringRegExpReplace($contacts[$i][3],'[a-zA-Z;\\/:.,*?\"<>|& ]',"")
        if $phone <> "" And $phone <> " " Then
            $cache = $cache & "telephoneNumber: "& $phone & @CRLF
        EndIf

        ; Write fax number
        $fax = StringRegExpReplace($contacts[$i][4],'[a-zA-Z;\\/:.,*?\"<>|& ]',"")
        if $fax <> "" And $fax <> " " Then
            $cache = $cache & "facsimileTelephoneNumber: "& $fax & @CRLF
        EndIf

        ; Write email
        if $contacts[$i][6] <> "" Then
            $cache = $cache & "mail: "&$contacts[$i][6] & @CRLF
        EndIf

        ; Seperator for contacts
        $cache = $cache & @CRLF
        ; Write all in one file access
        FileWrite($file,$cache)
    Next
    TrayTip("CSV2LDIF Converter","Konvertiertierung abgeschlossen ",2000)
    sleep(2000)
EndFunc
0 голосов
/ 17 февраля 2012

Простой Поиск Google обнаружил несколько конвертеров CSV в LDIF.

Например scv2ldif2.pl .Это в Perl, но вы можете найти по крайней мере несколько реализаций Perl для Windows (например, Strawberry Perl .

...