2

为了在 Unix 系统上创建用户,我需要生成一个用户名和密码对,最好是一对难以猜测的(为了安全)。有谁知道使用 Perl 做这件事的好方法吗?

更新

所以我把下面的一些答案结合起来,做了一些我自己的东西,这就是我最终得到的。现在这些生成的用户名和密码有点神秘,不容易记住,这正是我想要的。但是,如果您正在寻找更具可读性的生成,则必须根据自己的喜好对其进行调整。

use String::Random qw(random_regex);
use Data::Random::WordList;
my $user = random_regex('\w{3,6}\d{3,6}\w{3,7}') . time . int(rand(1000)); 
my $wl = new Data::Random::WordList( wordlist => '/usr/share/dict/words' );
my @rand_words = $wl->get_words(int(rand(3)) + 3);
$wl->close();
my $pass = join " ", @rand_words;
$pass .= ' ' . int(rand(1000)) . time;
my $crypt_pass = crypt($pass,'salt');

system "useradd -p $crypt_pass $user";

#you can now login with $user and $pass on your system
4

3 回答 3

2

来自http://sysadminsjourney.com/content/2009/09/16/random-password-generation-perl-one-liner/

perl -le 'print map { (a..z,A..Z,0..9)[rand 62] } 0..pop' 8

将从字符 az、AZ 和 0-9 生成一个随机的 8 个字符的字符串。

您应该能够修改它以生成用户名和密码。

用户名将是:

perl -le 'print map { ([a-z_][a-z0-9_][rand 62] } 0..pop' 30

密码将相似,但您需要使用passwd命令将其实际设置给用户。不确定 Perl 是否有等价物。

于 2013-05-22T04:08:37.583 回答
2

用于生成密码您可以使用:

$password = `date | md5sum | fold -w 10 | head -n 1`;
$password = crypt($password,'some_string');

它实际上比 Perl 更像 Bash,但它确实完成了工作。

于 2013-05-22T04:00:31.663 回答
2

正如其他人所提到的,它比 perl 更 BASH。这是我生成密码的方法:

passwd=`date +%s | sha256sum | base64 | head -1 | cut -c 1-8`
于 2013-05-22T06:13:08.270 回答