Acrescentando Echo [Password Generator]

1

Estou criando um gerador de senhas, mas não consigo que as senhas sejam anexadas corretamente.

Aqui está o meu script

i="0"
while [ $i -lt 5 ]
do
    echo -n '#' >> passwords.txt && openssl rand -hex 4 >> passwords.txt && echo -n '/' >> passwords.txt && echo -n 'X' >> passwords.txt
    i=$[$i+1]
done

Saída

#b887e0d0
/X#7093289e
/X#2210cfcd
/X#fd175e1f
/X#0c18fc9e
/X

Saída esperada

#b887e0d0/Z
#7093289e/Z
#2210cfcd/Z
#fd175e1f/Z
#0c18fc9e/Z

Como posso fazer isso para que ele não pule essa primeira linha e também para que ele execute cada comando nessa ordem e escreva no arquivo txt de senhas como a saída esperada.

Obrigado.

    
por Ryan Hawdon 17.12.2015 / 14:45

2 respostas

6

Isso deve ser feito:

for i in {1..5}; do
    printf '#%s/Z\n' "$(openssl rand -hex 4)"
done >passwords.txt

Substitui as várias chamadas para eco com uma única chamada para printf. Ter a chamada para o openssl dentro de um comando substituição tem o efeito colateral de fazer desaparecer a linha, e esse caractere de nova linha foi a causa das quebras de linha mal posicionadas visível no seu exemplo.

    
por 17.12.2015 / 15:05
4

O problema é que openssl está sendo 'útil' e colocando uma nova linha no final da string aleatória. Você pode remover isso colocando-o em tr

openssl rand -hex 4 | tr -d '\n'
    
por 17.12.2015 / 15:01