Author Topic: Bulk-Import mit Change der Mailadresse  (Read 769 times)

zephyrus

  • Zen Apprentice
  • *
  • Posts: 1
  • Karma: +0/-0
    • View Profile
Bulk-Import mit Change der Mailadresse
« on: March 15, 2016, 08:20:44 am »
Hallo zusammen,

ich steige momentan noch nicht ganz hinter das Verwaltungsschema der Benutzerkonten.

Zentyal soll aktuell in der Dev-Version 4.2 als Standalone Mailserver fungieren. Ein Script importiert ca. 1.500 Mailkonten in Zentyal via CSV-Datei.

Code: [Select]
use strict;
use warnings;

use EBox;
use EBox::Global;
use EBox::Samba::User;
use File::Slurp;
use EBox::UsersAndGroups::User;

my @lines = read_file($NEW_import);
chomp (@lines);

EBox::init();

my $users = EBox::Global->modInstance('users');
my $parent = EBox::Samba::User->defaultContainer();


for my $line (@lines) {
    my ($login, $vorname, $nachname, $password, $mail, $old_login) = split(',', $line);

    EBox::Samba::User->create(
        samAccountName => $login,
        parent => $parent,
        givenName => $vorname,
        sn => $nachname,
        password => $password,
        description => 'Auto imported 2016-05'
);
}
1;

Was ich jedoch noch nicht hin bekomme: Der Login soll ungleich Mailadresse sein. Ich kann derzeit jedoch nicht mit den mir bekannten Mitteln hier die Mailadresse in gesonderter Form mitgeben. Jeder bisher versuchter Parameter wird ignoriert.

Beispiel:
        samAccountName => LOGIN1234
        givenName => VORNAME
        sn => NACHNAME
        Liefert mir die Mailadresse: LOGIN1234@local.net

Ich möchte aber eine andere Mailadresse für diesen User hinterlegen, zB. MAILKONTO-1234@local.net

Wie kann ich das realisieren? Gerne auch im Nachgang nach dem Import als eigene Routine.

Danke


julio

  • Guest
Re: Bulk-Import mit Change der Mailadresse
« Reply #1 on: March 15, 2016, 10:39:08 pm »
Hallo zephyrus,

eine nachträgliche Lösung (bitte nicht gleich mit 1500 Konten ausprobieren!!  :D):

Skript-Datei mit folgende Inhalte erstellen, Dateiname zb.: ~/Documents/change_mail_name
Code: [Select]
#!/usr/bin/perl

use strict;
use warnings;

use EBox;
use EBox::Global;
use EBox::Samba::User;

  my $from = 'LOGIN';
  my $to = 'MAILKONTO-';

  my $userMod = EBox::Global->getInstance()->modInstance('samba');
  foreach my $user (@{ $userMod->users() }) {
    my $mail = $user->get('mail');
    if ($mail) {
      my ($lhs, $rhs) = split '@', $mail, 2;
      print "Email before change:\t$lhs\@$rhs\n";
      $lhs = ~s/$from/$to/ig;
      $user->delete('mail');
      $user->clearCache();
      $user->set('mail', "$lhs\@$rhs", 1);
      $user->save();
      print "Email after change:\t$lhs\@$rhs\n\n";
    }
  }
1;

Skript Permission ändern:
Code: [Select]
chmod +x ~/Documents/change_mail_name

Skript starten mit:
Code: [Select]
sudo -u ebox ~/Documents/change_mail_name

wenn alles richtig geht, Ergebnisse:
« Last Edit: March 15, 2016, 11:00:00 pm by julio »