Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#!/usr/bin/perl -wT
use Net::LDAP;
use Encode qw(from_to);
my $prefix = '/var/www/stats';
my $users = $prefix.'/realname.cfg';
my $groups = $prefix.'/group.cfg';
my $ldap = Net::LDAP->new('ldap://dc.domain.ru') or die "$@";
my $result = $ldap->bind('CN=user,CN=Users,DC=domain,DC=ru', 'password' => 'xxxxx');
if($result->code) {
die 'Bind failed!\n';
}
$result = $ldap->search(
'base' => 'OU=Пользователи,DC=domain,DC=ru',
'filter' => '(&(objectClass=user)(!(UserAccountControl=66050)))',
'scope' => 'sub',
'attrs' => [ 'cn', 'sAMAccountName', 'Department' ]
);
if($result->entries <= 0) {
die "Found no users\n";
}
my %groups = ();
open(OUT, '>' . $users);
foreach my $entry ($result->entries) {
my $name = $entry->get_value('cn');
my $login = lc($entry->get_value('sAMAccountName'));
my $dept = $entry->get_value('Department');
if(defined $dept) {
$groups{$dept}{$login} = 1;
}
print OUT $login . "\t" . $name . "\n";
}
close(OUT);
my $i = 1;
open(OUT, '>' . $groups);
foreach my $group (sort keys %groups) {
foreach my $login (sort keys %{$groups{$group}} ) {
my $num = sprintf("%02d", $i);
print OUT $login . "\t" . $num . "\t" . $group . "\n";
}
$i++;
}
close(OUT);
while (<FF>) {
...
$user = Ip2Name($Lhost,$user,$Ltimestamp);
...
}
# xzcat access.log-20140624.xz | wc -l
1691991
Автоматический импорт ФИО пользователей из Active Directory в Lightsquid