====== Gerar senhas ======
Métodos eficazes para gerar senhas seguras no terminal do Linux usando o Bash. Esses métodos vão combinar diferentes ferramentas e funções para criar senhas que incluem letras, números e caracteres especiais.
===== 1. Utilizando o comando tr com /dev/urandom =====
Este é um método simples e muito usado para gerar senhas seguras usando caracteres aleatórios.
senha=$(head /dev/urandom | tr -dc 'A-Za-z0-9_@#$%&*+-=' | head -c 20 ; echo)
echo $senha
**Ou**:
senha=$(head /dev/urandom | tr -dc '[[:alnum:]][[:punct:]]' | head -c 20 ; echo)
echo $senha
* **head /dev/urandom**: Lê uma pequena quantidade de dados aleatórios;
* **tr -dc 'A-Za-z0-9_@#$%&*+-='**: Filtra para manter apenas os caracteres desejados (letras, números e alguns símbolos);
* **head -c 20**: Corta a string para os primeiros 20 caracteres, ajuste conforme a necessidade de tamanho da senha;
* **[\[:alnum:]\]**: Caracteres alfanuméricos;
* **[\[:punct:]\]**: Caracteres pontuação.
===== 2. Usando o comando `openssl` para geração de senha =====
O **openssl** é uma ferramenta poderosa que também pode ser usada para gerar senhas criptograficamente seguras.
senha=$(openssl rand -base64 24 | tr -dc 'A-Za-z0-9_@#$%&*+-=' | head -c 20 ; echo)
echo $senha
* **openssl rand -base64 24**: Gera uma quantidade suficiente de dados aleatórios, codificados em Base64.
* **tr -dc 'A-Za-z0-9_@#$%&*+-='**: Filtra os caracteres para manter apenas os desejados.
* **head -c 20**: Define o comprimento da senha.
===== 3. Combinando a data atual com aleatoriedade =====
Você pode usar a data e hora atuais como parte de sua senha para adicionar um elemento de unicidade temporal.
parte1=$(date +%s%N) # Segundos e nanossegundos desde 1970
parte2=$(openssl rand -base64 10 | tr -dc 'A-Za-z0-9_@#$%&*+-=')
senha="${parte1:0:10}$parte2"
echo $senha
* **date +%s%N**: Gera um valor baseado na hora atual em segundos e nanossegundos.
* **openssl rand -base64 10**: Gera dados aleatórios adicionais.
* **tr -dc 'A-Za-z0-9_@#$%&*+-='**: Filtra para caracteres específicos.
A senha final combina parte da data com os dados aleatórios.
===== 4. Usando shuf para misturar palavras ou letras =====
Você pode criar uma senha por meio de uma combinação de palavras, misturadas de maneira aleatória.
palavras=('Casa' 'Carro' 'Livro' 'Árvore' 'Sol')
senha=$(printf "%s" "${palavras[@]}" | fold -w1 | shuf | tr -d '\n' | head -c 20 ; echo)
echo $senha
* **printf "%s" "${palavras[@]}"**: Imprime todas as palavras sem espaços entre elas.
* **fold -w1**: Dobra a string para que cada caractere apareça em uma nova linha.
* **shuf**: Embaralha os caracteres.
* **head -c 20**: Seleciona os primeiros 20 caracteres.
Estes métodos cobrem uma ampla gama de técnicas que podem ser usadas para gerar senhas robustas diretamente do terminal do Linux, utilizando o Bash e suas ferramentas integradas. Personalize cada abordagem conforme a necessidade para adequar-se aos diferentes requisitos de segurança.