В Linux есть необычное псевдоустройство /dev/urandom для генерации псевдослучайных чисел. Его много где используют. Например, забить какой-то диск случайными данными для полного удаления предыдущей информации:
# dd if=/dev/urandom of=/dev/sda3
С помощью /dev/urandom удобно генерировать пароли с заданной длиной и сложностью. Пример простого пароля из 8 символов, с строчными и заглавными буквами:
# < /dev/urandom tr -dc 'a-zA-Z' | fold -w 8 | head -n 1
Добавляем сюда цифры и увеличиваем длину:
# < /dev/urandom tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1
Добавляем некоторые спецсимволы и ещё увеличиваем длину:
# < /dev/urandom tr -dc 'a-zA-Z0-9#!@' | fold -w 12 | head -n 5
Меняя параметр head можно генерировать сразу несколько паролей. Например, всегда выводить по 5 паролей и выбирать тот, что больше нравится.
Можно добавить алиас в .bashrc, чтобы быстро генерировать пароли:
alias randpw='< /dev/urandom tr -dc 'a-zA-Z0-9#!@' | fold -w 12 | head -n 5'
Перечитываем .bashrc и проверяем:
# source .bashrc# randpwoDQ7Fw@a#QhJ364UG@j8T1MmUxwRZU9K1bIHGfToKOi#fmglZB!Qv6eI#cp5
Удобный функционал. Я лично не люблю генераторы, где нельзя исключить некоторые спецсимволы. Никогда не ставлю в пароли доллар, палочки разные и т.д. С ними иногда бывают проблемы.
А вы как генерируете пароли? Если кто-то знает, подскажите, как в примерах с urandom сделать так, чтобы в каждом пароле обязательно присутствовал спецсимвол, число и буква. Я не могу сообразить, как это сделать. В текущем варианте это всё рандомно и иногда спецсимволов нет, поэтому приходится по несколько паролей выводить, чтобы точно получить нужный.
#bash #linux