Como ler em N caracteres aleatórios de / dev / urandom?

43
read /dev/urandom 3

O texto acima não está funcionando.Como posso ler bytes aleatórios de /dev/urandom no bash?

    
por linux 23.06.2011 / 07:34

6 respostas

39
random="$(dd if=/dev/urandom bs=3 count=1)"
    
por 23.06.2011 / 07:44
39
head -c 500 /dev/urandom | tr -dc 'a-zA-Z0-9~!@#$%^&*_-' | fold -w 3 | head -n 1

(Se você quiser caracteres traços literais, o caractere traço deve ir no final da string como feito acima, ao contrário de *-_ ).

E para explicar o que é feito devido ao conjunto de comandos acima:

  1. head -c 500 /dev/urandom : Obtenha os primeiros 500 caracteres (bytes) de /dev/urandom .
  2. tr -dc 'a-zA-Z0-9~!@#$%^&*_-' : remova todos menos os caracteres especificados em 'a-zA-Z0-9~!@#$%^&*_-' da saída do primeiro comando.
  3. fold -w 3 : formata a saída do segundo comando de forma que tenha 3 caracteres por linha.
  4. head -n 1 : Exibe a primeira linha do resultado do terceiro comando em stdout .
por 21.02.2013 / 17:41
26

Por favor, verifique man od .

Você pode usar, por exemplo

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

para gerar números aleatórios de 4 bytes decimais não assinados.

    
por 01.09.2015 / 09:18
18

Aqui está um que cria strings base64, note que mesmo que eles estejam limitados a strings base64, o preenchimento é removido deles, então você não pode decodificá-los, você provavelmente não precisará dele de qualquer maneira.

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

Substitua 5 pelo número de caracteres que você deseja.

Se, no entanto, precisar decodificá-los, mova base64 para o final do canal. Em seguida, ele coletará 5 caracteres do urandom e o base64 o codificará com o preenchimento correto, mas a string final pode ser mais longa do que o desejado devido ao preenchimento.

cat /dev/urandom | head -c 5 | base64
    
por 04.01.2015 / 07:34
9

Tente isto: dd if=/dev/urandom bs=1 count=3

Se você quiser colocar o resultado em $ variable:

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

Observe que provavelmente não será imprimível.

    
por 23.06.2011 / 07:43
4

A solução mais fácil seria tão simples quanto:

$ head -cN /dev/urandom
    
por 01.09.2015 / 10:00