Bash: véletlen számok és karakterek generálása

Ha egyszerűen, szinte bármilyen rendszeren elérhető véletlenekre van szükséged, akkor itt a helyed!

Szabadpingvin logó
Szabadpingvin logó

Ha egyszerűen, szinte bármilyen rendszeren elérhető véletlenekre van szükséged, akkor itt a helyed!

Fontos, hogy a következőkben generált véletlenek semmiképp sem használhatóak kriptográfiai célokra. Kiválóan használhatóak, ha véletlen számra vagy karaktersorozatra van szükséged, de semmi komolyabbra.

Továbbá Bash shellben („rendszerhéjban”) dolgozunk.

Ha csak egy számra van szükséged, akkor a bash tartalmaz egy $RANDOM változót, melynek az értéke 0 és 32767 (16 bites, előjeles integer) között, véletlenszerűen változik.

~$ echo $RANDOM
26045

Ha betűkre is szükséged van, akkor ezt felhasználva karakterláncot is generálhatsz:

#!/bin/bash
array=()
for i in {a..z} {A..Z} {0..9}; 
   do
   array[$RANDOM]=$i
done
printf %s ${array[@]::8} $'\n'

Ennek az eredménye egy nyolc karakter hosszú karakterlánc lesz kisbetű, nagybetű és szám kombinációban, pl.: vnz8CXhL

A script egy 62 elemű tömböt generál, amiből a printf sorban, a::8 utasítással az első 8 elem értékét (karaktereket) kérjük le. Változtasd kedvedre. Ha kell mind a 62 karakter, akkor pedig vedd ki az egész::8 részt.

Természetesen egy sorban is megy, adhatunk egy változónak véletlen értéket is:

~$ veletlen=`for i in {a..z} {A..Z} {0..9}; do array[$RANDOM]=$i; done; printf %s ${array[@]::8}`
~$ echo $veletlen
vsWrE0wM

Ha nem akarsz ilyesmivel szórakozni, akkor a $RANDOM értékét megetetheted valamelyik hash készítő paranccsal is, például az sha512sum vagy md5sum parancsokkal:

~$ echo $RANDOM | md5sum
0e8341cd22b2cd04af969d6a060ebcb0  -

~$ echo $RANDOM | sha512sum 
d28139c3077d9852c330a352e1864e57749912887cf7e50ae11bf184e8ebe3a5aaef3cc6d3f1e9d19d6fb4940e36fe220ce52413fa4535fa928f67402a86b614  -

A kimenet ízlés szerint ízesíthető vágható.