Remove o espaço e os símbolos da saída do grep

0

Estou tentando gerar uma senha aleatória com este pequeno script

#!/bin/bash if [ -z $PASSWORD ]; then PASSWORD=$(date | md5sum | grep '[a-zA-Z1-9]') fi

Mas isso resulta em um resultado como:

15d020e6e8e6038ffb027323401ca9a9 -

Meu campo de senha não pode ter nenhum espaço vazio ou símbolos, eu quero usar comandos bash padrão porque isso será executado em ambientes de janela vazia.

Como faço para corrigir isso? Eu tentei grep -o mas não funcionou.

    
por Freedo 02.11.2017 / 10:45

2 respostas

1

Existem várias maneiras de analisar o resumo real da saída de md5sum :

  1. grep -E -o '[[:alnum:]]+' , isso retornaria a parte alfanumérica da saída md5sum , mas também forneceria a você quaisquer bits de nome de arquivo se presentes na saída (não no caso apresentado na pergunta, pois o nome do arquivo é - , entrada padrão ).
  2. cut -d ' ' -f 1 , isso simplesmente retornaria o bit da saída antes do primeiro caractere de espaço. Esta é sem dúvida a maneira mais comum de obter a string de digestão MD5 "nua".
  3. Variações no tema cut incluem awk '{ print $1 }' e coisas semelhantes.

Para geração de senha, sugiro usar pwgen em vez de um resumo MD5, principalmente porque um resumo MD5, a menos que computado sobre dados aleatórios, não é aleatório.

Um hack seria usar algo como

tr -dc '[:alnum:]' </dev/urandom | dd bs=1 count=32 2>/dev/null

Isso extrairia um fluxo de caracteres alfanuméricos de /dev/urandom e dd reduziria o fluxo após 32 desses caracteres. Em vez de dd , também é possível usar head -c 32 .

Ou usando md5sum (neste caso, mais de 1Kb de dados aleatórios de /dev/urandom ):

dd if=/dev/urandom bs=1k count=1 | md5sum | cut -d ' ' -f 1

Mas, na verdade, basta instalar e usar pwgen .

Veja também Quando usar / dev / random vs / dev / urandom

    
por 02.11.2017 / 11:25
2
PASSWORD=$(date | md5sum | grep -o '[a-z0-9]*')

homem grep:

>    Repetition
>        A  regular  expression  may  be  followed  by one of several repetition
>        operators:
>        ?      The preceding item is optional and matched at most once.
>        *      The preceding item will be matched zero or more times.

ps .: essa é uma geração de senha muito insegura. Melhor usar pwgen ou mkpasswd .

    
por 02.11.2017 / 10:55

Tags