Have you ever wanted to generate a password using the openssl passwd
command, but didn't want the prompt?
I encountered this problem when I was writing an Ansible role for setting up Nginx basic auth. I didn't want the prompt since I had no way for ansible to handle that gracefully. After some Googling, and some man
page grepping, I found the answer.
You can generate a password without a prompt by piping text into openssl
and passing a new flag. For example:
echo "password" | openssl passwd -apr1 -stdin
This will echo to stdout
. This way you can write a script or something instead of having to use the prompt to type in the password.
In my case of generating a basic auth password, I had to append the output to the /etc/nginx/.htpasswd
file. That was done using the following command:
echo "password" | openssl passwd -apr1 -stdin >> /etc/nginx/.htpasswd
There ya go. It's that easy. I have actually used this trick a couple times for generating passwords and piping to pbcopy
(the clipboard) on my mac.
Pretty useful stuff!