[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Serie di lettere e numeri da combinare - come??



gio 29 aprile 2004, alle 20:29 (GMT+0200), gandu ha scritto:
> Ho una serie lettere e numeri a-z/A-Z/0-9 vorrei ottenere una stringa di 
> cinque caratteri casuale... come posso fare? PHP, Perl, bash???

===INIZIO script ===
#!/bin/sh
##### VARIABILI #
# Caratteri per stringa:
char_num=5
# Num. stringhe:
pass_num=1
# Caratteri scelti tra:
char_set="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0-9"
##### COMANDI in pipe #
cat /dev/urandom | sed "s/[^${char_set}]//g" | \
sed "s/.\{${char_num}\}/&\n/g" | egrep ".{${char_num}}" | \
head -$((`date +%-N`/1000000)) | tail -${pass_num}
== FINE ==

> p.s. ... e tutte le combinazioni? giusto per vedere se s'incastra :-)

Qualcosa tipo:
00000
00001
...
A9999
.....
zzzzy
zzzzz
? se si ... passo


ATTENZIONE: se fai esperimenti ricorda che un imperfetto filtraggio di
cat /dev/urandom puo` rendere illegibile il terminale: nel caso digita
alla cieca:
reset
e dai INVIO

Ho preferito inserire tutti i caratteri voluti perche` con un locale
it_IT@euro in a-z sono compresi à ú ç æ ª ecc. (per chi non ha il
charset iso8859 a` u` ...).

head -$((`date +%-N`/1000000)) introduce una 2^ randomizzazione: prende
le prime X righe dell'output precedente dove X e` il momento (in
millisecondi) in cui e` stato lanciato
tail prende le ${pass_num} ultime righe di quelle selezionate da head.

Baco: se lanci lo script in un momento in cui l'orologio del PC segna
000 millisecondi non avrai alcun output.
-- 
Misura *ANTISPAM*: il mio indirizzo *non* e` alterato, ma
e` valido *solo* fino al 30 giugno 2004
Ave       Johan Haggi
pridie Kalendas Maias MMDCCLVII ab Urbe condita



Reply to: