Как читать N случайных символов из /dev/urandom?

read /dev/urandom 3

Выше не работает.. Как я могу прочитать случайные байты из /dev/urandom в баш?

7 ответов

Решение
random="$(dd if=/dev/urandom bs=3 count=1)"
head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1

(Если вы хотите использовать буквенные тире, то дефис должен идти в конце строки, как сделано выше, в отличие от *-_).

И чтобы объяснить, что делается благодаря вышеупомянутому набору команд:

  1. head -c 500 /dev/urandom: Получить первые 500 символов (байтов) из /dev/urandom,
  2. tr -dc 'a-zA-Z0-9~!@#$%^&*_-': Удалить все символы, кроме указанных в 'a-zA-Z0-9~!@#$%^&*_-' с выхода первой команды.
  3. fold -w 3: Отформатируйте вывод второй команды так, чтобы в каждой строке было 3 символа.
  4. head -n 1: Показать первую строку результата третьей команды на stdout,

Пожалуйста , проверьте man od,

Вы можете использовать, например,

od -vAn -N4 -tu4 < /dev/urandom

генерировать случайные числа 4 байта без знака.

Вот тот, который создает строки base64, обратите внимание, что, хотя они ограничены строками base64, отступы удаляются из них, поэтому вы не можете их декодировать, возможно, вам это все равно не понадобится.

 cat /dev/urandom | base64 | head -c 5

замещать 5 с количеством символов, которые вы хотели бы.

Однако если вам по каким-то причинам необходимо декодировать их, переместите base64 до конца трубы. Затем он соберет 5 символов из urandom и base64 закодирует его с правильным заполнением, но итоговая строка может быть длиннее, чем вы хотели из-за заполнения.

cat /dev/urandom | head -c 5 | base64

Самое простое решение будет таким простым:

$ head -cN /dev/urandom

Попробуй это: dd if=/dev/urandom bs=1 count=3

Если вы хотите поместить результат в переменную $:

variable=`dd if=/dev/urandom bs=1 count=3`

Обратите внимание, что это, вероятно, не будет для печати.

Следующая команда генерирует случайные символы

      </dev/urandom tr -dc 'A-Za-z0-9!"#$%&\(\)*+,./: ;<=>?@\[\]^_`{|}~-' | head -c 15  ; echo

из всех печатных символов ASCII и занимает только 15 символов заголовка (или любое указанное вами число).

Другие вопросы по тегам