já bych přidal něco v BASHi, nemusí to být 100% použitelné pro tvůj účel, ale může nakopnout/pomoct někomu dalšímu...
1. pomoci "proměnné" $RANDOM, která generuje číslo 0-32767 (15 bitů) + rozšíření, ale vždy jen v plném "bitovém rozsahu", tedy např. 16b -> 0-65535. Pro menší horní hranici stačí jen vydělit výsledek vhodným číslem (u velkých čísel již může být problém se zaokrouhlováním a tedy i chybnými výsledky - nezkoušeno!) a event. přípočet číslem, které určuje spodní hranici rozsahu:
echo $RANDOM
je-li potřeba 16b (0-65535):
echo $(( (($RANDOM)/16384)*32768 + $RANDOM ))
17b:
echo $(( (($RANDOM)/8192)*32768 + $RANDOM ))
18b:
echo $(( (($RANDOM)/4096)*32768 + $RANDOM ))
...
30b:
echo $(( ($RANDOM*32768 + $RANDOM ))
32b (int):
echo $(( ($RANDOM/8192)*(1<<30) + $RANDOM*32768 + $RANDOM ))
nebo (s tímto systémem se bude dále pokračovat - pro základ/krok po 16b):
echo $(( ((($RANDOM)/16384)*32768 + $RANDOM)*65536 + (($RANDOM)/16384)*32768 + $RANDOM ))
48b:
echo $(( ((($RANDOM)/16384)*32768 + $RANDOM)*(1<<32) + ((($RANDOM)/16384)*32768 + $RANDOM)*65536 + (($RANDOM)/16384)*32768 + $RANDOM ))
64b (double/??bigint??):
echo $(( ((($RANDOM)/16384)*32768 + $RANDOM)*(1<<48) + ((($RANDOM)/16384)*32768 + $RANDOM)*(1<<32) + ((($RANDOM)/16384)*32768 + $RANDOM)*65536 + (($RANDOM)/16384)*32768 + $RANDOM ))
Postup je v podstatě stejný, jak když se "manuálně" převádí mezi desítkovou a např. šestnáctkovou soustavou
př. rozsah 50 - 150:
echo $(($RANDOM/327+50))
327 vzniklo: 32767 (max. rozsah random funkce - viz skripty výše) / 100 (požadovaný rozsah - použít jen celé číslo bez desetin...)
2. pomoci "zařízení" /dev/urandom generující řetězec v plném rozsahu bajtů 0x00-0xFF (0-255), který se "ustřihne" pomoci příkazu head a rozsah znaků omezí pomoci příkazu tr:
vygeneruje 5 místné číslo (00000-99999)
tr -dc 0-9 < /dev/urandom | head -c 5
vygenerované číslo obsahuje číslice 0-9...
v některých případech bude možná vhodnější vygenerovat binární (dvojkové) číslo:
tr -dc 0-1 < /dev/urandom | head -c 64
Vygenerované číslo je 64b (viz. příkaz head) a výsledek je však nutno převést z binárního na desítkové pro další vhodné použití ve skriptech
zdroj:
http://www.cyberciti.biz/faq/linux-random-password-generator/Pokud jsou tu nějaké chyby, děkuji za upozorněni...