Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

10 способов генерации случайного пароля в командной строке

Оригинал: 10 Ways to Generate a Random Password from the Command Line
Автор: The Geek,
Дата публикации: September 29, 2010
Перевод: В.Костромин
Дата перевода: 19.05.2012 г.

10 способов генерации случайного пароля в командной строке

Одна из очень привлекательных особеностей Linux состоит в том, что вы можете одну и ту же задачу решить сотней различных способов. Даже если речь идет о таком простом деле, как генерация случайного пароля, существует множество команд, которые решают эту задачу в командной строке. В настоящей заметке приведены 10 вариантов того, как это можно сделать.

Мы позаимствовали эти команды на сайте Command-Line Fu и протестировали их на своём Linux-компьютере, чтобы убедиться, что все они работают. Вы можете использовать по крайней мере некоторые из них и в Windows с установленным Cygwin, хотя мы и не тестировали их в этой конфигурации. Но последний вариант наверняка будет работать.

Генерация случайного пароля

Каждую из приведенных ниже команд вы можете либо модифицировать, чтобы получить пароль желаемой длины, либо можете просто использовать первые х символов вывода, если не хотите использовать очень длинный пароль. Полагаю, что вы в любом случае используете менеджер паролей наподобие LastPass, так что нет нужды зпоминать пароли.

1. В этом методе используется SHA для того, чтобы получить из текущей даты хеш-функцию, которая фильтруется с помощью base64 и затем отображаются первые 32 символа.

date +%s | sha256sum | base64 | head -c 32 ; echo

2. Этот метод использует встроенную функцию /dev/urandom, вывод которой фильтруется, чтобы оставить только символы, допустимые в паролях. Затем в выоде оставляются только первые 32 символа.

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;

3. В этом случае используется случайная функция из openssl, если этот пакет установлен в вашей системе.

openssl rand -base64 32

4. Этот вариант подобен предыдущему с urandom, но команды используются в обратном порядке. Bash - очень мощная вещь!

tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1

5. Еще один пример, в котором для фильтрации используется команда strings, которая предназначена для вывода пригодных для печати строк файла, но в этом случае обрабатывает вывод urandom.

strings /dev/urandom | grep -o ':alnum:' | head -n 30 | tr -d '\n'; echo

6. А вот еще более простой вариант использования urandom.

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6

7. В этом варианте используется очень полезная команда dd.

dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev

8. Вы можете даже создать случайный пароль, который можно набирать одной только левой рукой.

</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""

9. Если создавать пароли вам приходится часто, будет неплохой идеей написать для этого функцию. После этого вы сможете использовать randpw в любое время, как только вам потребуется создать новый пароль. Лучше всего поместить ее в ваш файл ~/.bashrc.

randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}

Тот же самый прием вы можете использовать с любым из приведенных выше примеров, достаточно заменить содержимое фигурных скобок { }.

10. И, наконец, самый простой способ сгенерить пароль в командной строке. Этот способ работает в Linux, Windows с Cygwin и,вероятно, в Mac OS X. Я уверен, что некоторые люди скажут, что этот способ дает не такой случайный результат, как некоторые из предыдущих вариантов, но, честное слово, он вполне удовлетворительно работает.

date | md5sum

Да, и этот вариант достаточно легко запоминается.

Есть и другие способы генерации случайного пароля в командной строке Linux, например, команда mkpasswd, которая предназначена для задания пароля к пользовательскому экаунту в Linux. А какой способ используете вы?