Definir uma senha gerada aleatoriamente para uma variável?

3

Estou usando a seguinte linha para criar uma senha gerada aleatoriamente em um script bash, mas não parece que a string esteja sendo definida para a variável.

#Generate random password
PASSWORD=date+%s|sha256sum|base64|head -c 32;
echo $PASSWORD

Quando faço referência a $ PASSWORD mais tarde neste script, drush reclama que eu não forneci uma senha. Para testar, tentei alguns "ecos" para confirmar minha suspeita. Parece que há algo errado nas minhas declarações de atribuição?

    
por sean 18.07.2014 / 16:37

3 respostas

5

Você precisa usar uma cotação de substituição de comandos , como

PASSWORD='date +%s|sha256sum|base64|head -c 32'
echo $PASSWORD

ou você pode fazer isso,

PASSWORD=$(date +%s|sha256sum|base64|head -c 32)
echo $PASSWORD
    
por souravc 18.07.2014 / 16:51
6

Você precisa usar uma substituição de comando :

#Generate random password
PASSWORD=$(date +%s|sha256sum|base64|head -c 32)
echo $PASSWORD

então deve funcionar.

Prefira o sinal "$", leia mais aqui: Usando backticks ou dólar em scripts de shell

    
por TuKsn 18.07.2014 / 16:51
4

Gerar uma senha apenas com base na hora atual é muito ruim.

Como você quer uma senha de 32 caracteres, eu faria algo assim:

PASSWORD=$(head -c 16  /dev/random | md5sum | cut -f 1 -d\ )
    
por Ángel 18.07.2014 / 21:31