атрибут пользователя Домашняя директория

Обсуждение технических вопросов по продуктам Novell

атрибут пользователя Домашняя директория

Сообщение sovchik » 20 янв 2015, 09:13

В связи с переездом юзеров на другой сервак возникла необходимость поменять всем значение "домашней директории". Пробегать руками всех не хочется, может подскажет как автоматизировать этот процесс?
sovchik
 
Сообщения: 323
Зарегистрирован: 31 июл 2012, 23:06
Откуда: Ярославль

Re: атрибут пользователя Домашняя директория

Сообщение Ковалев Артем » 20 янв 2015, 12:23

Через ldap, вестимо.

Этот код проставляет поле generationQualifier из файла со списком дней рождений сотрудников. Малость допилить - и будет проставлять домашний каталог.
Код: Выделить всё
#!/usr/local/bin/perl

use Net::LDAP;
use IO::Socket;

my $ldap_server ='ldaps://XX.XX.XX.XX';
my $attrlist    = ["cn","networkAddress"];
my $dn;
my $birthday="33.33.33";
my $passwd;
my %blist;
my %excess;

loadbirthdays("birthdays.lst");

$ldap = Net::LDAP->new( $ldap_server ) or die "$@";

print "Enter password for ADMIN: ";
$passwd = <STDIN>;
chomp($passwd);

$mesg = $ldap->bind("cn=ADMIN,ou=Adm,l=MSK,c=RU", password => "$passwd");    # authorized bind
# $mesg = $ldap->bind;    # anonimous bind
$mesg->code && die $mesg->error;

$mesg = $ldap->search( # perform a search
                        base   => "l=MSK,c=RU",
                        filter => "(&(objectclass=user)(cn=*))"
                      );

$mesg->code && die $mesg->error;


foreach $entry ($mesg->entries) {

    $dn = $entry->dn;
    if ($entry->get_value("loginDisabled") eq "TRUE") { next; }


    $name = iso2win($entry->get_value(fullName));
    if (length($name) < 2) { next; }
   
    $birthday = getbirthday($name);
    if ($birthday eq "0") {
      $excess{$name} = $dn;
      next;
    };
   
    print "$name \t\t $birthday\n";
    $mesg = $ldap->modify($dn, replace => { "generationQualifier" => "$birthday" } );
#    $mesg->code && die $mesg->error;
}
print "----------------------------------------------------------------\n";


$mesg = $ldap->unbind;   # take down session

open (F, ">excess.log");
foreach $m (sort keys (%excess)) {
    print F "$m [$excess{$m}]\n";
};
close F;

open (F, ">spare.log");
foreach $m (sort keys (%blist)) {
    if (!($blist{$m} eq "X")) {
        print F "$m [$blist{$m}]\n";
    }   
};
close F;

exit;


sub getbirthday {
    my $nm = shift; # имя сотрудника
    my $b;

    $nm =~ tr/[а-я]ё/[А-Я]Ё/;
    $nm =~ tr/Ё/Е/;
    $nm =~ s/\s//g;
    if (defined($blist{$nm})) {
      $b = $blist{$nm};
      $blist{$nm} = 'X';
      $b =~ /(\d\d)\.(\d\d)\.(\d\d)(\d\d)/;
      $b = "$1.$2.$4";
      return $b;
    }
    return "0";
};

sub loadbirthdays {
  my $fname = shift; # имя файла
  my $a;
   
    open(F,$fname);
    while (defined($a=<F> )) {
   chomp($a);
   if ($a =~ /(.+)\s+(\d\d\.\d\d\.\d\d\d\d)/) {
       my $n = $1;
       my $b = $2;
       $n =~ tr/[а-я]/[А-Я]/;
       $n =~ tr/Ё/Е/;
       $n =~ s/\s//g;
       $blist{$n} = $b;
   }
    }
   
    close F;
};

sub bin2str {
    my $bin = shift;
    my $res = "";
   
    my ($a0,$a1,$a,$b,$c,$d) = unpack("C6", $bin);
    $res="$a\.$b\.$c\.$d";
   
    return $res;
};

sub iso2win {
$_[0]=~tr/\xD0\xD1//d; $_[0]=~tr/\x90-\xBF\x80-\x8f/\xC0-\xEF\xF0-\xFF/;
return $_[0]; }

берем картину мироздания и тупо смотрим - что к чему...
Аватара пользователя
Ковалев Артем
 
Сообщения: 924
Зарегистрирован: 29 мар 2004, 11:44
Откуда: Москва

Re: атрибут пользователя Домашняя директория

Сообщение Владимир Семиколенных » 20 янв 2015, 13:30

Для этого где - то на Cool Solutions была утилитка homes.
В.
Владимир Семиколенных
 
Сообщения: 174
Зарегистрирован: 10 июн 2002, 16:03
Откуда: Мурманск

Re: атрибут пользователя Домашняя директория

Сообщение Константин Ошмян » 20 янв 2015, 17:57

А если поискать на этом же форуме, то можно найти аналогичную тему, где я задавал тот же вопрос и потом делился своим опытом.
Аватара пользователя
Константин Ошмян
 
Сообщения: 991
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Re: атрибут пользователя Домашняя директория

Сообщение sovchik » 21 янв 2015, 17:57

2 Ковалев Артем:
спасибо за код, поковыряю на досуге
2 Владимир Семиколенных:
то что надо, благодарю.
sovchik
 
Сообщения: 323
Зарегистрирован: 31 июл 2012, 23:06
Откуда: Ярославль

Re: атрибут пользователя Домашняя директория

Сообщение Константин Ошмян » 22 янв 2015, 11:51

А я спасибо за предоставленную ссылку не заслужил? :cry:
Аватара пользователя
Константин Ошмян
 
Сообщения: 991
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Re: атрибут пользователя Домашняя директория

Сообщение Антон Фридрих » 22 янв 2015, 14:18

Искать по форуму нынче не в почете... :) Тема то была разжевана 10(!) лет назад, какие тут уже благодарности :)
Аватара пользователя
Антон Фридрих
 
Сообщения: 606
Зарегистрирован: 09 фев 2006, 07:55
Откуда: Красноярск

Re: атрибут пользователя Домашняя директория

Сообщение sovchik » 22 янв 2015, 23:58

Нет, не заслужили. Кто помог тех и поблагодарил, а тыкания носом в поиск никогда помощью не считал. Равно как и вопли про "поиск не в почете". Пинайте теперь сколько угодно, мне всё равно.
sovchik
 
Сообщения: 323
Зарегистрирован: 31 июл 2012, 23:06
Откуда: Ярославль

Re: атрибут пользователя Домашняя директория

Сообщение Владимир Семиколенных » 23 янв 2015, 10:22

Как раз Константин и заслужил. sovchik, если вы посмотрите его сообщегние, то увидите не "тыканье носом" а ссылку на "аналогичную тему". А в ней буквально второе сообщение - решение вашей проблемы.
В.
Владимир Семиколенных
 
Сообщения: 174
Зарегистрирован: 10 июн 2002, 16:03
Откуда: Мурманск

Re: атрибут пользователя Домашняя директория

Сообщение sovchik » 23 янв 2015, 21:26

Фраза "а если поискать" и есть тыкание носом, а не товарищеская помощь.
Утилита homes помогла значительно сильнее, так что вы не правы - поблагодарил именно тех, кто помог. Пр моему смысл благодарности именно отметить помогших, а не выразить благоговение перед завсегдатаями форума
sovchik
 
Сообщения: 323
Зарегистрирован: 31 июл 2012, 23:06
Откуда: Ярославль


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: Dick и гости: 208