Как автоматизировать генерацию htpasswd из командной строки без ввода пароля?

Я пытаюсь автоматизировать создание пароля из командной строки. Я пробовал ниже, но он все еще спрашивает пароль.

echo "test101" | htpasswd -c ~/temp/password admin

Как сгенерировать автоматизацию htpasswd из командной строки без ввода пароля?

Ответ 1

Почему бы просто не использовать:

htpasswd -b -c ~/temp/password admin test101

Ответ 2

Переключатель -b должен выполнить трюк, но пароль будет отображаться другим пользователям в системе через список процессов (ps и т.д.):

htpasswd -b -c ~/temp/password admin test101

Ответ 3

Если у вас не установлен htpasswd (например, при использовании nginx), вы можете сгенерировать пароль с помощью openssl.

printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd

Ответ 4

Со страницы руководства htpasswd мы получаем это:

-i Считать пароль из stdin без проверки (для использования скрипта).

Так что, согласно вашему вопросу, что-то вроде этого должно работать:

echo "test101" | htpasswd -c -i ~/temp/password admin

Но пароль будет виден в истории и списке процессов.

Чтобы автоматизировать создание пароля из командной строки, я бы записал простой пароль в файл и сделал что-то вроде этого:

htpasswd -c -i ~/temp/password admin < ~/temp/pass_plain

После этого удалите файл pass_plain.

Также убедитесь, что файл pass_plain не доступен для чтения кому-либо еще, даже если он находится там в течение нескольких секунд.