Gerando senhas aleatórias
Publicado por Sandro Marcell 14/04/2008
[ Hits: 6.507 ]
Homepage: http://sanmarcell.wordpress.com
Simples Perl script que gera senhas aleatórias. Tá meio tosco, mas...
Ex.:
prompt: script.pl 30
prompt: Q-P6#z_Ipo?9+#l-Q4z!W=f6R9Nh+e
Outras versões:
Tcl:
http://www.slackbr.org/forum/viewtopic.php?f=46&t=16424
C shell:
http://www.slackbr.org/forum/viewtopic.php?f=45&t=16455
#!/usr/bin/perl
#
# Gerando senhas aleatorias.
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Uso: <script.pl> ou <script.pl [valor]>
#
# Onde:
# [valor] determinara a quantidade de caracteres que comporao a senha.
#
# Obs.:
# - Somente numeros sao validos para a string [valor].
# - Caso a string [valor] nao seja declarada, o padrao assumido e 10.
# - Se a string [valor] possuir espacos ou quaisquer caracteres que nao
# sejam numeros, os mesmos serao removidos.
# Inicializando variavel:
my $senha;
# Removendo caracteres invalidos:
my $valor = "@ARGV";
$valor =~ s/[^0-9]//g;
# Se [valor] nao for declarado, o padrao e assumido:
if (!length $valor) { $valor = 10; }
# Vetor com caracteres utilizandos para gerar a senha:
my @cars = ('a' .. 'z','A' .. 'Z',0 .. 9,qw(! ? ^ ~ @ # $ % & * - _ + = ));
# Loop de controle:
for (my $i = 0 ; $i < $valor ; $i++) {
# Gerando a senha:
reverse $senha .= @cars[int(rand(@cars))];
}
# Resultado:
print "$senha\n";
# Fim
Scalar - Alguns dos usos mais comuns deste tipo de variável do Perl
Cálculo de área de uma figura geométrica
Separa os dígitos de um número
Usando comandos shell com Perl
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Discos que não instalam o sistema por erro MBR/GPT no Linux
Hospedagem de Mangás com Kavita e Docker para Acesso Remoto via Tailscale
Aplicar tema e ícones do Ubuntu Cinnamon no Arch Linux sem AUR
Instalação do driver Epson L3150 [RESOLVIDO] (5)
Continuando meus tópicos anteriores (7)









