ich erstelle eine ldf datei in der linux umgebung mit perl. dann kopiere ich sie automatisch auf den exchange/AD server
##########################
#!/usr/bin/perl -w
use strict;
use CGI;
use DBI;
# Verbindung zur mySQL
my $file="/mnt/sql2ldap.ldf";
my $cgi_obj = new CGI;
my $dbh = DBI->connect( 'dbi:mysql:crm', 'root', 'secret1')
die "KeineVerbindung zum MySQL-Server aufbauen: $DBI::errstr\n";
# SQL Query
my $sth = $dbh->prepare( 'select last_name,first_name,phone1_area_code,phone1_number,email1_email_address from person where Active = 1' )
die "Kann Statement nicht vorbereiten: $DBI::errstr\n";
# select last_name,first_name,phone1_area_code,phone1_number,email1_email_address from person;
$sth->execute()
die "Kann Abfrage nicht ausfuehren: $DBI::errstr\n";
open(FILE,">$file");
# LDIF Generate
while ( my @ergebnis = $sth->fetchrow_array() ){
# utf8::encode($ergebnis[0]);
# utf8::encode($ergebnis[1]);
# utf8::encode($ergebnis[2]);
# utf8::encode($ergebnis[3]);
# utf8::encode($ergebnis[4]);
$ergebnis[0]="none" if $ergebnis[0] eq "";
$ergebnis[1]="(Vorname fehlt)" if $ergebnis[1] eq "";
$ergebnis[2]="none" if $ergebnis[2] eq "";
$ergebnis[3]="none" if $ergebnis[3] eq "";
$ergebnis[4]="none" if $ergebnis[4] eq "";
#for (my $i=0; $i<=4; $i++) {
# $ergebnis[$i]="none" if $ergebnis[$i] eq "";
#}
print FILE "dn: CN=" . $ergebnis[1] ." " . $ergebnis[0] . ",OU=Adressbuch,DC=firma,DC=de" .
"\n" . "changetype: add" .
"\n" . "objectClass: top" .
"\n" . "objectClass: person" .
"\n" . "objectClass: organizationalPerson" .
"\n" . "objectClass: contact" .
"\n" . "cn: " . $ergebnis[1] ." " . $ergebnis[0] .
"\n" . "sn: " . $ergebnis[0] .
"\n" . "telephoneNumber: " . $ergebnis[2] . $ergebnis[3] .
"\n" . "givenName: " . $ergebnis[1] .
"\n" . "distinguishedName: CN=" . $ergebnis[1] ." " . $ergebnis[0] . ",OU=Adressbuch,DC=firma,DC=de" .
"\n" . "instanceType: 4" .
"\n" . "name: " . $ergebnis[1] ." " . $ergebnis[0] .
"\n" . "objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=firma,DC=de" .
"\n" . "mail: " . $ergebnis[4] ."\n\n";
}
close(FILE);
$sth->finish();
$dbh->disconnect;
system("cat " . $file);
##################################
unter windows importiere ich sie mit:
ldifde -k -i -f sql2ldap.ldif -s server
die kontakte erscheinen auch in der OU=Adressbuch. leider sehe ich sie nicht im outlook das mit dem exchange verbunden ist. nur die kontakte der AD Benutzer.
so sieht ein ldf eintag aus.
###################################
# dn: CN=Bercker Matthias,OU=Adressbuch,DC=firma,DC=de
# changetype: add
# objectClass: top
# objectClass: person
# objectClass: organizationalPerson
# objectClass: contact
# cn: Becker Matthias
# telephoneNumber: 03064783633
# givenName: Bercker
# initials: Matthias
# distinguishedName :CN=Bercker Matthias,OU=Adressbuch,DC=firma,DC=de
# instanceType: 4
# name: Becker Matthias
# objectCategory:
# CN=Person,CN=Schema,CN=Configuration,DC=firma,DC=de
# mail: blabla@cisco.com
####################################
fehlt noch was. (wie kriege ich die kontakte aktiv) oder villeicht eine andere lösung???
übrigens :
In der OU Adressbuch (auf dem Exchange Server) alle Kontakte markieren - rechte Maustaste - Exchange Aufgaben - E-mail aktivieren (heisst das denke ich).
diese option hatte ich leider nicht?