Tentando gerar um passe aleatório para usuários e salvando-os em um arquivo

1

Estou tentando gerar uma passagem aleatória dos usuários criados por um arquivo de texto em um script bash e, em seguida, salvando essas senhas em um arquivo de texto. É assim que eu estou fazendo ..

Funciona bem e cria o usuário a partir do arquivo de texto e gera a senha, bem como o arquivo lol, mas as senhas dos usuários criados não funcionam.

Aqui está o meu código, qualquer ajuda sobre isso seria apreciada ..

while read line || [ -n "$line" ] # protect against no newline for last line

do name=$line
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 >> lol)

sudo useradd $name -m
sudo usermod -p $(echo $pass | openssl passwd -1 -stdin) $name

echo "The user - $name - has been created!"

done < "$fname" # double-quote fname echo
    
por Umair 30.11.2014 / 21:56

1 resposta

3

O valor de retorno da substituição do comando é o stdout do subshell.

Na linha a seguir, você redirecionou a saída para o arquivo lol dentro da subcamada. portanto, não há valor de retorno para você armazenar na variável pass :

pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 >> lol)

Você pode dividir a seguinte linha em dois da seguinte forma:

pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1)
echo "$pass" >> lol

Ou use tee -a :

pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 | tee -a lol)
    
por 30.11.2014 / 22:12

Tags