Basta executar o script a seguir e você poderá obter diversos tipos de senhas. A explicação do script vem logo a seguir.
Abra um novo arquivo de texto e cole o seguinte conteúdo:
#!/bin/bash
# Função para gerar uma senha
gerar_senha() {
local comprimento=$1
local usar_numeros=$2
local usar_caracteres_especiais=$3
local usar_letras_maiusculas=$4
local usar_letras_acentuadas=$5
# Base da senha apenas com letras minúsculas
local caracteres='abcdefghijklmnopqrstuvwxyz'
# Adicionar números
if [[ $usar_numeros == 's' ]]; then
caracteres+='0123456789'
fi
# Adicionar letras maiúsculas
if [[ $usar_letras_maiusculas == 's' ]]; then
caracteres+='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
fi
# Adicionar letras acentuadas
if [[ $usar_letras_acentuadas == 's' ]]; then
caracteres+='áéíóúâêîôûàèìòùãõäëïöüç'
fi
# Adicionar caracteres especiais
if [[ $usar_caracteres_especiais == 's' ]]; then
caracteres+='!@#$%^&*()_+=-[]{}|;:,.<>?'
fi
# Gerar senha
senha=''
for i in $(seq 1 $comprimento); do
senha+="${caracteres:RANDOM % ${#caracteres}:1}"
done
# Perguntar ao usuário as configurações da senha
read -p "Quantidade de caracteres na senha: " comprimento
read -p "Incluir números? (s/n): " usar_numeros
read -p "Incluir caracteres especiais? (s/n): " usar_caracteres_especiais
read -p "Incluir letras maiúsculas? (s/n): " usar_letras_maiusculas
read -p "Incluir letras acentuadas? (s/n): " usar_letras_acentuadas
# Chamar a função para gerar a senha
gerar_senha $comprimento $usar_numeros $usar_caracteres_especiais $usar_letras_maiusculas $usar_letras_acentuadas
Salve o arquivo com o nome que desejar como por exemplo "gerador_de_senhas.sh".
Trone-o executável:
chmod +x gerador_de_senhas.sh
Execute-o:
./gerador_de_senhas.sh
O script é simples e não é a prova de usuário. Por exemplo, quando for perguntado quantos caracteres a senha deve ter, se o usuário digitar algo sem sentido como "b", o script continua. Só não vai funcionar.
Segue a explicação do script:
#!/bin/bash: Esta linha indica que o script deve ser executado usando o interpretador Bash.
gerar_senha() { ... }: Esta sintaxe define uma função chamada gerar_senha. Funções em Bash ajudam a organizar o código de forma reutilizável.
local comprimento=$1: Esta linha define uma variável local chamada comprimento e a atribui ao primeiro argumento passado para a função ($1).
local usar_numeros=$2, local usar_caracteres_especiais=$3, local usar_letras_maiusculas=$4, local usar_letras_acentuadas=$5: Definem variáveis locais para os outros argumentos que serão passados para a função.
local caracteres='abcdefghijklmnopqrstuvwxyz': Cria uma variável chamada caracteres inicializada apenas com letras minúsculas.
if [[ $usar_numeros == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir números. Se sim (== 's'), adiciona a sequência '0123456789' à variável caracteres.
if [[ $usar_letras_maiusculas == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir letras maiúsculas. Se sim, adiciona letras maiúsculas à variável caracteres.
if [[ $usar_letras_acentuadas == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir letras acentuadas. Se sim, adiciona as letras acentuadas à variável caracteres.
if [[ $usar_caracteres_especiais == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir caracteres especiais. Se sim, adiciona os caracteres à variável caracteres.
senha='': Inicializa uma variável chamada senha como uma string vazia.
for i in $(seq 1 $comprimento); do ... done: Cria um loop que executa de 1 até o valor de comprimento. Por exemplo, se comprimento for 12, o loop será executado 12 vezes.
senha+="${caracteres:RANDOM % ${#caracteres}:1}": Em cada iteração do loop, um caractere aleatório da variável caracteres é adicionado à variável senha.
echo -e "\nSenha gerada usando as seguintes opções:": Exibe uma mensagem informativa no terminal indicando que mostramos as opções usadas para gerar a senha. O -e habilita a interpretação de caracteres de escape (como \n para nova linha).
echo -e "\nSenha gerada: $senha": Exibe a senha gerada.
read -p "Quantidade de caracteres na senha: " comprimento: Exibe a pergunta ao usuário e armazena a resposta na variável comprimento.
read -p "Incluir números? (s/n): " usar_numeros: Exibe a pergunta ao usuário e armazena a resposta na variável usar_numeros.
read -p "Incluir caracteres especiais? (s/n): " usar_caracteres_especiais: Exibe a pergunta ao usuário e armazena a resposta na variável usar_caracteres_especiais.
read -p "Incluir letras maiúsculas? (s/n): " usar_letras_maiusculas: Exibe a pergunta ao usuário e armazena a resposta na variável usar_letras_maiusculas.
read -p "Incluir letras acentuadas? (s/n): " usar_letras_acentuadas: Exibe a pergunta ao usuário e armazena a resposta na variável usar_letras_acentuadas.
gerar_senha $comprimento $usar_numeros $usar_caracteres_especiais $usar_letras_maiusculas $usar_letras_acentuadas: Chama a função gerar_senha, passando as respostas do usuário como argumentos.
Curiosidade:
E o que significa "^^" em alguns lugares do script? O operador "^^" é utilizado com a notação "${variável^^}" para converter uma string para maiúsculas. Aqui está um exemplo para ilustrar:
Se você tiver a variável "usar_numeros" com o valor "s":
- "${usar_numeros^^}" converterá "s" para "S".