Задать вопрос
@28r

Как написать генератор паролей на bash?

Решил поизучать bash.
Есть необходимость генерировать цифровые пароли по следующей схеме.
На первом этапе пользователь выбирает временной диапазон действия пароля(например в формате dd.mm.yyyy hh.mm - hh.mm), не менее часа и не более 10 часов. Если для данного временного промежутка пароль уже сгенерирован, то об этом сообщается пользователю (например: Невозможно сгенерировать пароль для промежутка 30.10.2015 22.00-23.00 Так как существует пароль для промежутка 30.10.2015 21.00-31.10.2015 01.00).
На втором этапе пароль генерируется и сохраняется в файл, имя файла соответствует временному диапазону действия пароля.
На третьем этапе содержимое файла(можно и с названием) выводится на экран и (в идеале) печататется на принтере.
Загвоздки появились уже на первом этапе.
#!/bin/bash
MATRIX="0123456789"
LENGTH="8"
while [ "${n:=1}" -le "$LENGTH" ]
do
PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
let n+=1
done
echo "$PASS"

На той же странице где нашёл данный пример - встретил негативное мнение о данной конструкции и рекомендацию использовать следующую (совершенно для меня нечитаемую).
/dev/urandom | grep -o '[[:alnum:]]' | head -n 5 | tr -d '\n'; echo

Реализуема ли вообще эта задача на bash?
PS узнал команду для печати текстовых файлов
lpr <имя файла>
  • Вопрос задан
  • 1586 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
sanchomaster
@sanchomaster
deployment engineer
base64 /dev/urandom | head -10 | tr -d -c '0-9' | cut -c1-8


Кодируем случайную последовательность из /dev/urandom в ASСII по средствам base64, получаем 10 первых строк head -n10, удаляем из них все за исключением цифр tr -d -c '0-9' (знаки новой строки тоже удаляться, получится одна строка из цифр), и оставляем от них первые 8 знаков cut -c1-8.
Ответ написан
@AVKor
Для начала можно посмотреть, как на Perl сделано:
cat `which makepasswd`
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы