bash zufallsbuchstaben

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
root2root
Beiträge: 168
Registriert: 22.10.2007 13:06:29

bash zufallsbuchstaben

Beitrag von root2root » 25.02.2013 16:57:03

Hallo Team
ich kenne den bash Zufallsgenerator für Zahlen zB für Zahlen zwischen 0 und 1:

# echo $(($RANDOM % 2))

Gibts auch eine bash Funktion für Zufalls-Buchstaben [A-Za-z] ?

Dank euch
LG root2root

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: bash zufallsbuchstaben

Beitrag von Cae » 25.02.2013 17:42:16

Vielleicht so etwas:

Code: Alles auswählen

take=$(($RANDOM % 51)); i=0; echo {a..z} {A..Z} '' | while read -d\  char; do [ "$i" = "$take" ] && echo "$char"; ((i++)); done
read liest leerzeichengetrennte Strings ein, also die Buchstaben. Das abschliessende '' ist wichtig, weil sonst das Z nicht eingelesen wird. (Ich hab' keine Haeufigkeitsanalyse gemacht und gehe einfach mal davon aus, dass es richtig ist.)

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Re: bash zufallsbuchstaben

Beitrag von goeb » 25.02.2013 18:49:47

Wenn außer Bash auch Debiancoreutils erlaubt sind:

Code: Alles auswählen

tr -dc [:alpha:] </dev/urandom | head -c1

uname
Beiträge: 12469
Registriert: 03.06.2008 09:33:02

Re: bash zufallsbuchstaben

Beitrag von uname » 25.02.2013 19:50:03

Mensch. Da gibt es doch bestimmt auch was von ... awk

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Re: bash zufallsbuchstaben

Beitrag von goeb » 25.02.2013 20:28:04

AWK kann (wie die Bash auch) Zufallszahlen erzeugen und hat (wie die Bash auch) eine printf-Funktion, damit sollte man zu ASCII-Werten die entsprechenden Zeichen augeben können. Man muß aber beachten daß zwischen A-Z und a-z noch ein paar andere Zeichen liegen wenn man zufällig Groß- und Kleinbuchstaben erzeugen will (und nicht vorher eine extra Liste erstellen will, so in etwa wie in Caes Beispiel). Die tr-Variante ist wahrscheinlich am kürzesten.

wanne
Moderator
Beiträge: 7600
Registriert: 24.05.2010 12:39:42

Re: bash zufallsbuchstaben

Beitrag von wanne » 25.02.2013 22:59:32

Ich mache das eigentlich auch immer so ähnlich wie uname:

Code: Alles auswählen

base64 /dev/urandom | tr -d '[\n-=]' | head -c [ANZAHL] 
oder

Code: Alles auswählen

base64 /dev/urandom | tr -dc '[A-z]' | head -c [ANZAHL]
Ist nicht ganz so ineffizient. So generiere ich auch die meisten meiner PWs.
rot: Moderator wanne spricht, default: User wanne spricht.

root2root
Beiträge: 168
Registriert: 22.10.2007 13:06:29

Re: bash zufallsbuchstaben

Beitrag von root2root » 26.02.2013 10:27:12

Hallo zusammen,
prima, danke für eure Antworten,
habe inzwischen selbst mal nen kleinen Zwiezeiler gebastelt...

# echo "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" >~/abc
# li=$(($RANDOM % 51 +1)); echo -n $(cut -c$li ~/abc)

etwas hemdsärmlig, aber es läuft.
LG root2root

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: bash zufallsbuchstaben

Beitrag von Colttt » 26.02.2013 10:37:42

also ich bastle mir passwörter immer so:

Code: Alles auswählen

pw=$(dd if=/dev/urandom bs=1 count=6 2>/dev/null | openssl base64)
echo $pw
damit hast du ein 8stelliges Passwort
Debian-Nutzer :D

ZABBIX Certified Specialist

uname
Beiträge: 12469
Registriert: 03.06.2008 09:33:02

Re: bash zufallsbuchstaben

Beitrag von uname » 26.02.2013 10:52:11

also ich bastle mir passwörter immer so
Zwar wurde nach Passwörtern nicht gefragt aber dafür gibt es

Code: Alles auswählen

pwgen
pwgen -n <laenge>
Offtopic:
Das nutze ich manchmal für "geheime" Ordner auf Webservern. Ich erlaube dann nur feste Ordner und zudem Ordner, die mindestens 15 Zeichen (generiert mit pwgen -n 20) lang sind. So spare ich mir manchmal .htaccess.

Code: Alles auswählen

 
<DirectoryMatch "^/var/www/[a-zA-Z0-9]{15}"> 
                Options Indexes FollowSymLinks MultiViews  
                AllowOverride None 
                Order allow,deny   
                allow from all   
</DirectoryMatch>  

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Re: bash zufallsbuchstaben

Beitrag von goeb » 26.02.2013 12:35:57

root2root hat geschrieben:

Code: Alles auswählen

# echo "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" >~/abc
# li=$(($RANDOM % 51 +1)); echo -n $(cut -c$li ~/abc)
Besser: Lass die temporäre Datei weg, pack die Zeichen in eine Variable und pick dir dann die entsprechende Stelle raus mit:

Code: Alles auswählen

${string:position:length}
(Wahrscheinlich Bash-spezifisch, aber du hattest ja nach Bash gefragt.)

ChronoBoost
Beiträge: 140
Registriert: 29.01.2013 11:03:50

Re: bash zufallsbuchstaben

Beitrag von ChronoBoost » 26.02.2013 12:36:53

Oder mit bash arrays.

Ein Zeichen:

Code: Alles auswählen

chars=({a..z} {A..Z}); echo ${chars[$(($RANDOM % ${#chars[@]}))]}
Mehrere Zeichen:

Code: Alles auswählen

chars=({a..z} {A..Z})
for i in {1..10}; do
    echo -n ${chars[$(($RANDOM % ${#chars[@]}))]};
done

wanne
Moderator
Beiträge: 7600
Registriert: 24.05.2010 12:39:42

Re: bash zufallsbuchstaben

Beitrag von wanne » 26.02.2013 22:00:08

goeb hat geschrieben:(Wahrscheinlich Bash-spezifisch, aber du hattest ja nach Bash gefragt.)
$RANDOM ist sowieso total bash spezifisch in allen anderen Schells musst du dir das aus /dev/urandom holen.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten