Leser: 1
|< 1 2 3 >| | 21 Einträge, 3 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
use strict;
use warnings;
use Carp qw(croak);
use Net::LDAP::LDIF;
my ($fads, $fadam, $fout) = @ARGV;
my $Ads = read2hash($fads, 'sAMAccountName'); # strukturiert einlesen, siehe unten
my $Adam = read2hash($fadam, 'cn'); # Da dn kein Attribute ist -> cn
# Wenn nun der sAMAccountName eines User-Objektes(in dem Fall "muetz")
# aus der ADS im ADAM File nicht zu finden ist,
my @missing = grep { !defined $Adam->{lc $_} } keys %{$Ads};
my $targetOU = 'OU=BEREICH1,DC=wurstfabrik,DC=DE';
my $out = Net::LDAP::LDIF->new ($fout, 'w', 'die');
foreach my $misskey (@missing) {
my $ads = $Ads->{$misskey}; # Net::LDAP::Entry-Objekt
my $neu = Net::LDAP::Entry->new();
$neu->dn ("CN=$misskey,$targetOU");
#$neu->add (objClass => [qw/top person organizationalPerson user/]);
foreach my $att (qw/sn givenName company mail/) { # Zu übernehmende Attribute
my $val = $ads->get_value($att);
$neu->add ($att, $val) if length $val;
}
$out->write_entry ($neu);
}
$out->done();
sub read2hash {
my $file = shift; # Eingabe: Dateiname
my $keyname = shift; # Schlüssel für Referenzierung: 'sAMAccountName' oder 'cn'
my %hash; # Ausgabe: (Ref auf) Hash
my $n = 0;
my $ldif = Net::LDAP::LDIF->new ($file, 'r', 'die');
while(not $ldif->eof ()) {
my $entry = $ldif->read_entry ();
$n++;
if ($ldif->error ()) {
print STDERR "Error msg: ", $ldif->error (), "\n";
print STDERR "Error lines:\n", $ldif->error_lines (), "\n";
die "\n";
} else {
my $key = $entry->get_value ($keyname);
croak "Schluessel ($keyname) nicht vorhanden in Satz $n" unless $key;
$hash{lc $key} = $entry; # Net::LDAP:Entry-Objekt unter dem
# (klein geschriebenen ) Schlüssel speichern
}
}
return wantarray ? %hash : \%hash;
}
1
2
3
4
5
dn: CN=muetz,OU=BEREICH1,DC=wurstfabrik,DC=DE
sn: Muetz
givenname: Holger
company: wurstfabrik
mail: [EMAIL=Holger.Muetz@wurstfabrik.DE]Holger.Muetz@wurstfabrik.DE[/EMAIL]
my $ldif = Net::LDAP::LDIF->new ($file, 'r') || croak "Cannot open $file";
|< 1 2 3 >| | 21 Einträge, 3 Seiten |