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/