Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Perl - не могу совладать с crypt


Автор: tooncheg 18.3.2015, 18:25
#!/usr/bin/perl -w
 
open (PASSWD, '~./passwd.mig5') or die $!;
 
my @users;
 
while (<PASSWD>) {
    chomp;
    next if /^\s*#/; # ignore comments
    my @f = split /:/, $_;
    my %hash;
    @hash{'username','password','uid','gid','gecos','home','shell'} = @f;
    push @users, \%hash;
    
}
foreach my $user (@users) {
print crypt ("test8", "\$6\$");//так он его создает но не могу передать его в вызываемую программу
    system("useradd -m -s $user->{shell}  -p  ?????????  $user->{username}");
}

Задача перенести из файла passwd пользователей и дать им пароли, которые имеются в отдельном файлике в не зашифрованном виде. но проблема возникла, надо в useradd пароль передавать в уже зашифрованном виде. не получается и я не понимаю что ему нужно. Не могу передать его в вызываемую программу

Автор: tzirechnoy 18.3.2015, 20:58
Я не понял, в каком месте Вы споткнулись (в чём в настоящий момент у Вас проблема), но лучшэ используйте какой-нибудь ужэ существующий chpasswd.

Автор: alezzz 18.3.2015, 21:20
А зачем crypt выводите print-ом? Сохраняйте в переменную и передавайте в system вместо знаков вопроса.

Автор: tooncheg 19.3.2015, 08:41
perl давно не открывал. в общем я записал в переменную результат crypt в цикл foreach и не срабатывало ничего. вынес из цикла и все заработало.

Автор: tzirechnoy 19.3.2015, 11:35
"Полный крах всех надежд, шесть букв, вторая "и"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)