Hallo. 

Wir sind nun kurz vor OTRS 2.1 Produktivstart und ich sitze noch an einer 
harten Nuss.
 
Kennt sich jemand mit dem script aus sync-ldap2db.pl um die ADS Daten aus 
Windows 2000 per ldap ins OTRS zu importieren ?
 
Wenn ich linuxseitig folgendes aufrufe :
 
ldapsearch -d 255 -h 172.18.5.1 -W -b 
"ou=langenfeld,dc=msnet,dc=strauss1902,dc=de" -D 
"cn=schulze,ou=verwaltung,ou=langenfeld,dc=msnet,dc=strauss1902,dc=de" -x

klappt die LDAP Anbindung wunderbar, aber über das Script passiert nix. Dieses 
wurde angepasst und sieht wie folgt aus :
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/perl -w
# --
# scripts/tools/sync-ldap2db.pl - sync a ldap directory to database # Copyright 
(C) 2001-2005 Martin Edenhofer <[EMAIL PROTECTED]> # -- # $Id: 
sync-ldap2db.pl,v 1.1 2005/03/05 07:53:31 martin Exp $ # -- # This program is 
free software; you can redistribute it and/or modify # it under the terms of 
the GNU General Public License as published by # the Free Software Foundation; 
either version 2 of the License, or # (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, # but WITHOUT 
ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS 
FOR A PARTICULAR PURPOSE.  See the # GNU General Public License for more 
details.
#
# You should have received a copy of the GNU General Public License # along 
with this program; if not, write to the Free Software # Foundation, Inc., 59 
Temple Place, Suite 330, Boston, MA  02111-1307  USA # --
 
# use ../ as lib location
use File::Basename;
use FindBin qw($RealBin);
use lib dirname($RealBin). "/../";
use lib dirname($RealBin)."/../Kernel/cpan-lib";
 
use strict;
 
use vars qw($VERSION);
$VERSION = '$Revision: 1.1 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
 
use Net::LDAP;
use Kernel::Config;
use Kernel::System::Log;
use Kernel::System::DB;
use Kernel::System::Encode;
 
# --
# create common objects
# --
my %CommonObject = ();
$CommonObject{ConfigObject} = Kernel::Config->new(); $CommonObject{LogObject} = 
Kernel::System::Log->new(
    LogPrefix => 'OTRS-sync-ldap2db',
    %CommonObject,
);
$CommonObject{EncodeObject} = Kernel::System::Encode->new(
    %CommonObject,
);
$CommonObject{DBObject} = Kernel::System::DB->new(
    %CommonObject,
);
 
my $UidLDAP = 'uid';
my $UidDB = 'login';
 
my %Map = (
  # db => ldap
    email => 'mail',
    customer_id => 'mail',
    first_name => 'sn',
    last_name => 'givenname',
    pw => 'test',
#    comments => 'description',
    comments => 'postaladdress',
);
 
my $LDAPHost = '172.18.5.1';
my %LDAPParams = ();
my $LDAPBaseDN = 'ou=langenfeld,dc=msnet,dc=strauss1902,dc=de';
my $LDAPBindDN = 
'cn=schulze,ou=verwaltung,ou=langenfeld,dc=msnet,dc=strauss1902,dc=de';
my $LDAPBindPW = 'kennwort von schulze';
my $LDAPScope = 'sub';
my $LDAPCharset = 'utf-8';
#my $LDAPFilter = '';
my $LDAPFilter = '(ObjectClass=*)';
 
my $DBCharset = 'iso-8859-1';
my $DBTable = 'customer_user';
 
# ldap connect and bind (maybe with SearchUserDN and SearchUserPw) my $LDAP = 
Net::LDAP->new($LDAPHost, %LDAPParams) or die "$@"; if (!$LDAP->bind(dn => 
$LDAPBindDN, password => $LDAPBindPW)) {
    $CommonObject{LogObject}->Log(
        Priority => 'error',
        Message => "Bind failed!",
    );
    exit 1;
}
 
# split request of all accounts
foreach (qw(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x 
y z)) {
    my $Filter = "($UidLDAP=$_*)";
    if ($LDAPFilter) {
        $Filter = "(&$LDAPFilter$Filter)";
    }
    # perform user search
    my $Result = $LDAP->search(
        base => $LDAPBaseDN,
        scope => $LDAPScope,
        filter => $Filter,
    );
#print "F: ($UidLDAP=$_*)\n";
    foreach my $entry ($Result->all_entries) {
        my $UID = $entry->get_value($UidLDAP);
        if ($UID) {
            # check if uid existsis in db
            my $Insert = 1;
            $CommonObject{DBObject}->Prepare(
                SQL => "SELECT $UidDB FROM $DBTable WHERE $UidDB = 
'".$CommonObject{DBObject}->Quote($UID)."'",
                Limit => 1,
            );
            while (my @Row = $CommonObject{DBObject}->FetchrowArray()) {
                $Insert = 0;
            }
            my $SQLPre = '';
            my $SQLPost = '';
            my $Type = '';
            if ($Insert) {
                $Type = 'INSERT';
            }
            else {
                $Type = 'UPDATE';
            }
            foreach (keys %Map) {
                my $Value = 
$CommonObject{DBObject}->Quote(_ConvertTo($entry->get_value($Map{$_})) || '');
                if ($Type eq 'UPDATE') {
                    if ($SQLPre) {
                        $SQLPre .= ", ";
                    }
                    $SQLPre .= " $_ = '$Value'";
                }
                else {
                    if ($SQLPre) {
                        $SQLPre .= ", ";
                    }
                    $SQLPre .= "$_";
                    if ($SQLPost) {
                        $SQLPost .= ", ";
                    }
                    $SQLPost .= "'$Value'";
                }
            }
            my $SQL = '';
            if ($Type eq 'UPDATE') {
                print "UPDATE: $UID\n";
                $SQL = "UPDATE $DBTable SET $SQLPre, valid_id = 1, change_time 
= current_timestamp, change_by = 1 ";
                $SQL .= " WHERE $UidDB = 
'".$CommonObject{DBObject}->Quote($UID)."'";
            }
            else {
                print "INSERT: $UID\n";
                $SQL = "INSERT INTO $DBTable ($SQLPre, $UidDB, valid_id, 
create_time, create_by, change_time, change_by) VALUES ($SQLPost, 
'".$CommonObject{DBObject}->Quote($UID)."', 1, current_timestamp, 1, 
current_timestamp, 1)";
            }
            $CommonObject{DBObject}->Do(SQL => $SQL);
        }
    }
}
 
sub _ConvertTo {
    my $Text = shift;
    if (!defined($Text)) {
        return;
    }
    else {
        return $CommonObject{EncodeObject}->Convert(
            Text => $Text,
            To => $DBCharset,
            From => $LDAPCharset,
        );
    }
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Wissen Sie, welche Parameter genau angepasst werden müssen oder gibt es eine 
Doku zu dem Script ?
 
Leider gibt es ja kein log und unter /var/log/messages sieht man nichts.
 
Danke und schöne Grüsse,
 
Michael Schulze

----------------------------------------------
Strauss INNOVATION GmbH & Co. KG
Raiffeisenstraße 15 - 18
D - 40764 Langenfeld
Tel: +49 (0) 21 73 / 99 24 23
Fax: +49 (0) 21 73 / 99 24 90
E-Mail: [EMAIL PROTECTED]
----------------------------------------------
Michael Schulze
SAP Basis
----------------------------------------------
_______________________________________________
OTRS Mailingliste: otrs-de - Webpage: http://otrs.org/
Archiv: http://lists.otrs.org/pipermail/otrs-de/
Listenabo verwalten: http://lists.otrs.org/cgi-bin/listinfo/otrs-de/
Support oder Consulting fuer Ihr OTRS System?
=> http://www.otrs.com/

Antwort per Email an