Openssl rand base64, exceto letras maiúsculas. Linha de comando. Como?

0

Eu uso o openssl rand na linha de comando para gerar a senha. Eu uso openssl rand -base64 10 para gerar senha. Mas eu preciso excluir letras maiúsculas? por exemplo. como gerar 10 símbolos aleatórios excluem letras maiúsculas? Obrigado

    
por user234609 04.09.2017 / 12:56

2 respostas

1

Não há uma maneira direta de fazer isso, mas você pode criar uma string "normal" muito mais longa e, em seguida, massageá-la por meio de sed :

Supondo que você use 16 caracteres, basta fazer openssl rand -base64 48 | sed 's/[A-Z]//g ; s/^\(.\{16\}\).*//'

    
por 04.09.2017 / 13:36
0

openssl rand -base64 10 gera mais de 10 símbolos. Ele gera 10 bytes (que podem corresponder a caracteres não imprimíveis) e os codifica (usando um conjunto de caracteres imprimíveis).

Para gerar símbolos aleatórios de um determinado conjunto, use tr . Exemplo:

LC_ALL=C </dev/urandom tr -cd '[:lower:][:digit:]+\-._' | head -c 10 ; printf '\n'

Aqui tr recebe bytes de /dev/urandom e passa apenas os correspondentes; head termina o canal quando o número de caracteres especificado é atingido; printf adiciona uma nova linha.

Verifique man 1 tr e crie seu próprio conjunto desejado.

Notas:

  • LC_ALL=C faz com que tr ignore sua localidade.
  • escapei de - (daí \- ) porque tr interpreta +-. como um intervalo; , está dentro desse intervalo. Eu quis dizer +-._ literalmente, não incluindo , .
por 04.09.2017 / 14:01