Назад | Перейти на главную страницу

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

read /dev/urandom 3

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

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.
random="$(dd if=/dev/urandom bs=3 count=1)"

пожалуйста, проверьте 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

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

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

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

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

Самое простое решение было бы очень простым:

$ head -cN /dev/urandom