Adressen aus FileMaker ins OpenDirectory übertragen

Sonntag, 07 Juni 2009
0.0/5 Bewertung (0 Stimmen)
Beschreibung

Lange hatte ich nach einer Lösung gesucht, bis ich etwas Eigenes zusammengestiefelt habe. Wäre es nicht praktisch, wenn man die Adress-Daten einer FileMaker-Datenbank ins OpenDirectory eines Leopard-Servers einpflegen könnte, um diese dann weiter verwenden zu können? In meinem Fall ist das interessant, da die VoIP-Telefonanlage zur Anruferanzeige auf einen LDAP-Server zurückgreifen kann ([url]http://mezzo.net/asterisk/app_ldap.html[/url]).
Obwohl ich auch mit nativen LDAP-Strukturen arbeiten könnte, wollte ich die OSX-spezifischen Dateien und Befehle verwenden. Also habe ich mir die man-Pages von dsimport und dsexport angeschaut.
Um anschliessend eine für den Import geeignete Datei aus FileMaker heraus generieren zu können, habe ich mir mit dsexport ein entsprechende Musterdatei erzeugt:

$ dsexport export.out /LDAPv3/127.0.0.1 dsRecTypeStandard:People -u diradmin -p pass

Anhand dieser Datei kann ich nun den Skript in FileMaker definieren, aber zuerst muss noch ein globales Textfeld für die zu exportierende Datei angelegt werden:


  1. Berechneten Wert einfügen:
    [Export;
    ”0x0A 0x5C 0x3A 0x2C dsRecTypeStandard:People 17 dsAttrTypeStandard:City dsAttrTypeStandard:FirstName dsAttrTypeStandard:MobileNumber dsAttrTypeStandard:LastName dsAttrTypeStandard:RecordName dsAttrTypeStandard:RealName dsAttrTypeStandard:PhoneNumber dsAttrTypeStandard:Country dsAttrTypeStandard:AddressLine1 dsAttrTypeStandard:Street dsAttrTypeStandard:URL dsAttrTypeStandard:PostalCode dsAttrTypeStandard:State dsAttrTypeStandard:FAXNumber dsAttrTypeStandard:EMailAddress dsAttrTypeStandard:Company dsAttrTypeStandard:OrganizationInfo” & Char ( 13 ) & Char ( 10 )]

  2. Jetzt eine Schleife konstruieren, die die Feldinhalte der gewünschten Datensätze an den oben eingefügten Wert anhängt. Die Feldinhalte werden auch wieder über «Berechneten Wert einfügen»

    Austauschen (
    Partner::Ort Liefer & ”++” & Partner::Vorname Liefer & ”++” & Partner::Handy & ”++” & Falls(Partner::Nachname Liefer ≠ ””;Partner::Nachname Liefer ;Partner::Firma Liefer) & ”++” & Partner::Kundencode & ”++” & Partner::Name & ”++” & Partner::Telefon & ”++” & Partner::Land Liefer & ”++” & ”” & ”++” & Partner::Strasse Liefer & ”++” & Partner::Website & ”++” & Partner::PLZ Liefer & ”++” & Partner::Bundesland Liefer & ”++” & Partner::Fax & ”++” & Partner::Email & ”++” & Partner::Firma Liefer & ”++” & Partner::Firma; [”¶”;”, ”];[”,”;”,”];[”:”;”:”];[”++”;”:”])
    & Char ( 13 ) & Char ( 10 )

    Hier die entsprechend den Kopf-Informationen die richtigen Felder auswählen. Als Feldtrenner definiere ich erstmal «++» um diese anschliessend auszutauschen; auch muss ich evtl. vorhandene Kommas, Doppelpunkte und Zeilenschalter ersetzen.
  3. Als Abschluss nochmals einen Zeilenschaltung anfügen: Berechneten Wert einfügen

    [Export; Char ( 13 ) & Char ( 10 )]

  4. Jetzt über «Exportiere alle Feldwerte» die Export-Datei erzeugen und das Feld wieder leeren: Feldwertsetzen [Export; ””]
  5. Damit ich die Export-Datei automatisch zum Server übertragen kann, muss ich einen SSH-Zugang mit Public-Key-Authentication einrichten ([url]http://blog.no-panic.at/2005/03/11/ssh-public-key-authentication/[/url]).
  6. Da OpenDirectory UTF-8 verlangt, «Exportiere alle Feldwerte» aber UTF-16 erzeugt muss ich die Export-Datei [vor der Übertragung] noch konvertieren.
  7. Dazu erstelle ich einen Skript-Schritt «AppleScript ausführen» mit folgendem Inhalt:

    do shell script ”iconv -f UTF-16 -t utf-8 ~/Desktop/Export-Datei > ~/Desktop/Export-Datei-utf8”
    do shell script ”scp ~/Desktop/Export-Datei-utf8 admin@server.domain.com:Export-Datei”
    do shell script ”ssh ]admin@server.domain.com -n ”dsimport -g Export-Datei /LDAPv3/127.0.0.1 O -u diradmin -p pass””
    do shell script ”rm -rf ~/Desktop/Export-Datei ~/Desktop/Export-Datei-utf8”
    do shell script ”ssh admin@server.domain.com -n ”rm -rf Export-Datei””

    Dieser konvertiert die Datei «Export-Datei» von UTF-16 zu UTF-8 («Export-Datei-utf8») überträgt sie mittels scp, führt auf dem Server den Import aus und löscht anschliessend sowohl die übertragene Datei auf dem Server, wie auch die lokalen Ursprungsdateien.

Spezifikationen

Hits

2629

© by macjaner.ch | Powered by GoeGG-ArT.ch