Может, кому-нибудь пригодится. Сгенерировать набор (псевдо) случайных паролей в *nix можно, например, так: Code: $ dd if=/dev/urandom bs=1 count=1024 2>/dev/null | base64 -w30 | sed -n 1,45p | tr -d '+/=' | cut -c1-10 Приведенная последовательность команд генерирует 45 случайных 10-символьных паролей, состоящих из больших латинских букв, маленьких латинских букв и цифр. И Аналогично можно вот так: Code: dd if=/dev/urandom bs=1 count=64 2>/dev/null | uuencode -m - | head -n2 | tail -n1 | cut -c1-10 А вот способ ещё короче: Code: cat /dev/urandom | tr -cd A-HJ-NP-Za-km-z1-9 | head -c 12 Вот так можно обойтись без использования спецсредств типа pwgen.
А зачем ты задал такие промежутки A-HJ-NP-Za-km-z1-9, можно ведь просто задать a-zA-Z0-9: Code: echo `cat /dev/urandom | tr -cd a-zA-Z0-9 | head -c 12` Результат тот же. Во всяком случае я разницы не заметил.
А вот на перл: PHP: #!/usr/bin/perl $m = 16; $x = 8; $y = 92; my $pass = ""; $n = 1; @mass = ( "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", # 10 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", # 20 "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", # 30 "u", "v", "w", "x", "y", "z", # 36 "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", # 46 "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", # 56 "U", "V", "W", "X", "Y", "Z", # 62 "`", "-", "=", "\\", ";", "'", ",", ".", "/", "~", # 72 "!", "@", "#", "\$", "%", "^", "&", "*", "(", ")", # 82 "_", "+", "|", "{", "}", ":", "\"", "<", ">", "?", # 92 ); while ( $n <= $m ) { $k = 0; $pass = ""; while ( $k < $x ) { srand; $b = int(rand($y)); $pass = "$pass".$mass[$b]; $k++; } print "$n\t\t$pass\n"; $n++; }
вот от меня небольшой скрипт #!/usr/bin/perl print "Password length:"; chomp($length=<stdin>); $length=~s/\D*//g; $length||='8'; srand(); @letters=('a'..'z','A'..'Z',0..9,'#','*','_','-','+','='); for (1..$length){($pass.=$letters[rand(@letters)])}; print "\033[1;31m$pass\033[0;39m\n";