Zentyal Forum, Linux Small Business Server
International => German => Topic started by: zephyrus 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.
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
-
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
#!/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:
chmod +x ~/Documents/change_mail_name
Skript starten mit:
sudo -u ebox ~/Documents/change_mail_name
wenn alles richtig geht, Ergebnisse: