Создание случайных не-слов [закрыто]

dd if=/dev/urandom of=a.log bs=1M count=2

Вопрос: если этот код ^ дает мне случайные числа, как я могу получить случайные неслова (неразборчиво), такие как "hgcqw".

Вопрос 2: можно ли использовать команду shuf вместе с командой dd?

Спасибо!

Обновление от 6/21. (День отца)

@ Serg Сначала моей целью было получение чисел. Скажем, случайные двузначные числа от 01-100. Дать команду и запустить код. В итоге он выдаст мне 14, 17, 21, 35 (я придумываю, какие случайные числа я получаю). Далее я хочу получить среднее значение этих чисел. В данном случае среднее значение будет 21,75 (22). Задача состоит в том, чтобы остановить цикл, пока он не найдет конкретное среднее значение, которое я искал. В данном случае это будет 25. Вторая цель - получить случайные слова, а затем подсчитать, какие слова были использованы.

@ terdon

Слово - это "бакс", "утка" или "старая добрая удача". В общем, все, что можно найти в словаре. Длина может быть любой, если мы ограничим лимит до 5 букв, я был бы не против узнать как?

Что такое слово? Я предполагаю, что вы имеете в виду только a-z и A-Z, но какой длины? Будет ли словом liwyduglashvdbalishfvgapivflakhf? Как насчет ksjdas-asd-asd-asd? - может быть в словах. Пожалуйста, отредактируйте и уточните. - terdon вчера

4
задан 21 June 2015 в 08:08

6 ответов

Генерируйте случайный буквенный символ.

tr -cd '[:alpha:]' < /dev/urandom | fold -w1 | head -n1  

Генерируют случайную буквенную строку 10 символов в длине.

tr -cd '[:alpha:]' < /dev/urandom | fold -w10 | head -n1

Некоторые альтернативные классы символов POSIX для использования вместо alpha в [:alpha:]: alnum - алфавитно-цифровые символы
альфа - буквенные символы
цифра - цифры
график - видимые символы
ниже - символы нижнего регистра
верхний - символы верхнего регистра

Генерируют случайные числа в определенном диапазоне (пример 1-10).

shuf -i 1-10 -n1  

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

8
ответ дан 23 November 2019 в 11:34
dd if=/dev/urandom of=a.log bs=1M count=2

Это не дает Вам случайные числа. Это дает Вам случайный байты . Вы могли закодировать его к числам:

hexdump -v -e '"%d\n"' /dev/urandom | dd of=a.log bs=1M count=2

(Более ранняя версия использовала od, но od выходной формат довольно негибок.)

Используя /dev/random непосредственно могло бы быть довольно расточительным, так как это - поток байтов. Вы могли закодировать его к base64, и затем разделить неалфавиты, которые должны все еще получить Вас, в среднем, 80% входных данных:

base64 /dev/urandom | tr -cd '[[:alpha:][:space:]]'

Это имеет тенденцию оставлять довольно длинные линии. Вы могли, вместо этого, заменить числа новыми строками:

base64 /dev/urandom | sed 's/[^[:alpha:]]\+/\n/g'
7
ответ дан 23 November 2019 в 11:34

Генерировать случайную алфавитную строчную строку (включая пробелы) 2 МБ:

< /dev/urandom tr -dc 'a-z ' | head -c 2000000 > a.log

Для постоянного потока:

< /dev/urandom tr -dc 'a-z '

Для генерации случайной алфавитной строки смешанного случая (включая пробелы) 2 МБ:

< /dev/urandom tr -dc 'A-Za-z ' | head -c 2000000 > a.log

Для постоянного потока:

< /dev/urandom tr -dc 'A-Za-z '
4
ответ дан 23 November 2019 в 11:34

Другая версия (-c${1:-10} = длина 10):

< /dev/urandom tr -dc A-Za-z | head -c${1:-10} > out

или (head -n 10 = длина 10)

strings /dev/urandom | grep -o '[[:alpha:]]' | head -n 10 | tr -d '\n' > out

или с dd (count=10 = длина 10)

dd if=/dev/urandom bs=1 count=10 2>/dev/null | base64 | grep -o '[[:alpha:]]' | head -n 30 | tr -d '\n' > out

или это

openssl rand -base64 32| grep -o '[[:alpha:]]' | head -n 10 | tr -d '\n' > out

или это

date +%s | sha256sum | base64 | grep -o '[[:alpha:]]'| head -n 10 | tr -d '\n' > out
3
ответ дан 23 November 2019 в 11:34

Вот моя идея. mkpasswd используется часто для генерации зашифрованных паролей, следовательно строки, там уже не должно быть понятным. Небольшая проблема состоит в том, что это генерирует строки с числами. При помощи sed мы можем избавиться от тех.

mkpasswd | sed 's/[0-9]/YOLO/g'

YOLO мог быть тем, что Вы хотите заменить цифрами. Вы могли также просто удалить их:

mkpasswd | sed 's/[0-9]//g'

Вот иначе:

$ date | md5pass | sed 's/[0-9]//g'                                                                                                   
$NG.dLw$vcpGCylnDtmptDtogDr/

Как muru предложенный в реве комментариев, можно также установить pwgen, с sudo apt-get install pwgen, и работать pwgen -0. Эти-0 флагов говорят команде избегать цифр

И здесь являются sha1pass + sed комбинация:

sha1pass | sed 's/[[:digit:]]//g' | sed 's/[[:punct:]]//g'
Результат: PoXGAlAWjzMHgmfzHiYHGpemzqE

Другой метод с переменной $RANDOM: echo $RANDOM | tr '0-9' 'a-z'

В целом, если Вашей целью является поколение пароля, я предполагаю, что Вы читаете эту статью:

http://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/

3
ответ дан 23 November 2019 в 11:34

Используя python:

#!/usr/bin/env python2
import random, string 
def rand_gen(number_of_words, length):
    for i in range(number_of_words):
        print ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase) for _ in range(length))
    return
  • Мы определили функцию rand_gen(number_of_words, length), который возьмет два параметра в качестве исходных данных, number_of_words будет содержать количество случайных слов, которые Вы хотите генерировать, length будет содержать длину каждого случайного Word

  • string.ascii_lowercase и string.ascii_uppercase, имеют весь нижний регистр ASCII, и uppercse обозначает буквами соответственно

  • random.choice, выберет отдельный символ от [A-Za-z], каждый раз и length гарантирует, что это повторение продолжается до length число. join() тогда присоединится к символам для перебрасываний парой слов желаемой длины

  • , Этот процесс будет продолжен до number_of_words

Пример:

rand_gen(5, 3)
PDI
qKQ
Dvu
kwr
wDz

rand_gen(2, 5)
GLKXr
uOaHj
3
ответ дан 23 November 2019 в 11:34

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

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