Bash - Captura de entrada para um comando substituído armazenado na variável

1

Como eu seria capaz de capturar a entrada para um comando substituído armazenado em uma variável?

Exemplo:

Como eu seria capaz de capturar a entrada para o seguinte comando?

bar_foo=$(openssl passwd -1 -salt "foobar")
    
por Markus Lindberg 31.03.2016 / 08:31

1 resposta

2

A abordagem que você está mostrando acima captaria a saída do subcomando, ie. $(...) na sua variável, $bar_foo . Ao usar openssl , você pode fornecer a senha usando as opções -in ou -stdin .

Exemplo

$ myvar=$(openssl passwd -1 -salt "foobar" -stdin <<< "blah")
$ echo $myvar
$1$foobar$1ips4/cyJvjUjCj8w4exx0

Geralmente, é aconselhável colocar a senha em um arquivo e, em seguida, chamar openssl , pois isso a manterá fora de seu histórico e evitará que ela seja exposta de forma muito aberta.

UPDATE # 1

O OP acabou usando este método para solicitar ao usuário sua senha usando read e, em seguida, armazenando-a em uma variável, pass1 .

$ read -p "Password: " -s pass1

Esta variável pode então ser usada como entrada para o comando openssl .

$ myvar=$(openssl passwd -1 -salt "foobar" -stdin <<< "$pass1")
$ echo $myvar
$1$foobar$1ips4/cyJvjUjCj8w4exx0
    
por 31.03.2016 / 09:16