Creare stringhe di caratteri random in BASH
Creare stringhe di caratteri random in BASH
Salve,
volevo sapere se esiste un modo per poter generare una stringa di lunghezza fissa ( settata come argomento dello script ) usando /dev/urandom in bash oppure se l'unico modo per farlo è usare un array con tutto l'alfabeto e prendendo numeri a random si sceglie in corrispondenza un carattere a random ^^
Inoltre volevo sollevare una questione sulla randomizzazione di /dev/random /dev/urandom e $RANDOM :
in giro ho letto che la migliore è /dev/random perchè randomizza in base agli eventi di un utente che fa davanti al pc, mentre /dev/urandom funziona in modo simile a /dev/random ma anche se non si fanno azioni al pc riesce a creare una sequenza di valori a random molto verosimile. Mentre $RANDOM si dice che non randomizza bene i numeri in quando segue sempre un seed ( che può essere cambiato ).
Spero che qualcuno possa darmi delucidazioni in merito ^^.
Cmq sono maggiormente interessato al primo quesito, cioè fare una stringa di caratteri random in bash usando /dev/urandom.
Ciauzzz & Grazie ^^
volevo sapere se esiste un modo per poter generare una stringa di lunghezza fissa ( settata come argomento dello script ) usando /dev/urandom in bash oppure se l'unico modo per farlo è usare un array con tutto l'alfabeto e prendendo numeri a random si sceglie in corrispondenza un carattere a random ^^
Inoltre volevo sollevare una questione sulla randomizzazione di /dev/random /dev/urandom e $RANDOM :
in giro ho letto che la migliore è /dev/random perchè randomizza in base agli eventi di un utente che fa davanti al pc, mentre /dev/urandom funziona in modo simile a /dev/random ma anche se non si fanno azioni al pc riesce a creare una sequenza di valori a random molto verosimile. Mentre $RANDOM si dice che non randomizza bene i numeri in quando segue sempre un seed ( che può essere cambiato ).
Spero che qualcuno possa darmi delucidazioni in merito ^^.
Cmq sono maggiormente interessato al primo quesito, cioè fare una stringa di caratteri random in bash usando /dev/urandom.
Ciauzzz & Grazie ^^
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: Creare stringhe di caratteri random in BASH
Cosa ci devi fare con la stringa ?
se devi aprire/creare file con nomi sempre nuovi ci sono le primitive C per farlo!
ciao
se devi aprire/creare file con nomi sempre nuovi ci sono le primitive C per farlo!
ciao
Re: Creare stringhe di caratteri random in BASH
In passato ho usato questo comando per generare chiavi wep random a 128 bit:
Codice: Seleziona tutto
dd if=/dev/random bs=1 count=16 2>/dev/null | hexdump -e '16/1 "%02x" "\n"'Re: Creare stringhe di caratteri random in BASH
In pratica, mi è stato chiesto di svolgere un esercizio e di creare stringhe di caratteri casuali di lunghezza presa in input. I caratteri devono essere [a-z], quindi minuscoli e dalla a alla z.
Scusate se non ho specificato ^^
Scusate se non ho specificato ^^
Re: Creare stringhe di caratteri random in BASH
Una cosa fatta proprio al volo sfruttando la riga di M4rc0s che ringrazio
:
Spero vada bene per quello che ti serve.
Codice: Seleziona tutto
#!/bin/bash
if [ $1 -gt 0 ]
then
numero=$(($1**2))
dd if=/dev/random bs=1 count=$numero 2>/dev/null | hexdump -e $numero'/1 "%02x" "\n"' | sed s/'[^a-z]'//g | cut -c-$1
else
echo "Utilizzo: nomeprogramma numero"
fi
exit 0
Ultima modifica di Volans il giovedì 21 giugno 2007, 19:00, modificato 1 volta in totale.
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Re: Creare stringhe di caratteri random in BASH
Ti ringrazio per la risposta, però il fatto che la sequenza di caratteri random vengano tradotti in hex fa in modo che possa avere solo i caratteri [a-f] mentre a me servono caratteri da [a-z]. Cmq lo script che hai scritto è praticamente quello che mi serve, solo che invece di fare la conversione in hex mi serve la conversione in [a-z].Volans ha scritto: Una cosa fatta proprio al volo sfruttando la riga di M4rc0s che ringrazio:
Spero vada bene per quello che ti serve.Codice: Seleziona tutto
#!/bin/bash if [ $1 -gt 0 ] then numero=$(($1**2)) dd if=/dev/random bs=1 count=$numero 2>/dev/null | hexdump -e $numero'/1 "%02x" "\n"' | sed s/'[^a-z]'//g | cut -c-$1 else echo "Utilizzo: nomeprogramma numero" fi exit 0
Attendo news. Grazie per le risposte ^^
Re: Creare stringhe di caratteri random in BASH
Codice: Seleziona tutto
dd if=/dev/random bs=1 count=16 2>/dev/null | od -c | sed s/'[^a-z]'//gMi sa che bisogna seguire un'altra strada
Re: Creare stringhe di caratteri random in BASH
Risolto 
Sicuramente è poco "elegante", però è l'unica cosa che mi è venuta in mente.
Mettici un bel ciclo for esterno e dovresti aver risolto.
Sicuramente è poco "elegante", però è l'unica cosa che mi è venuta in mente.
Codice: Seleziona tutto
#!/bin/bash
Lettere="a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z"
lettere=($Lettere)
num_lettere=${#lettere[*]}
echo "${lettere[$((RANDOM%num_lettere))]}"Re: Creare stringhe di caratteri random in BASH
Grazie mille ^^
Re: Creare stringhe di caratteri random in BASH
Hai ragione, scusa non avevo pensato che in hex erano solo le prime... 
Non so se c'è un modo per convertire dd in ascii direttamente, mi sembra che il conv del suo man non serva a questo.
Non so se c'è un modo per convertire dd in ascii direttamente, mi sembra che il conv del suo man non serva a questo.
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti
