tr: Illegal byte sequence

Drobs

Carola
Registriert
23.05.08
Beiträge
115
hi,

ich wollte mir einfach nur mit Hilfe des Terminals zu Übungszwecken ein paar zufällige Passwörter ausgeben lassen.

Code:
cat /dev/urandom | tr -dc A-Za-z0-9 | fold -w10 | head -n20

An sich funktioniert der Code auch, wenn man ihn ausführt, mein Mac allerdings wirft mir immer folgenden Fehler:

Code:
tr: Illegal byte sequence

Nun habe ich schon ne ganze Weile gegoogelt aber keine Lösung gefunden, vllt. kann mir ja hier jmd. helfen.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
"tr" kann keine beliebigen Binärfolgen akzeptieren - ist ein (ASCII) Textwerkzeug mit beschränkter Steuerzeichenkompatibilität.
(Kann weder UTF noch anderen, zufällig entstehenden "Garbage-Text".)
 

Drobs

Carola
Registriert
23.05.08
Beiträge
115
Umso seltsamer, dass es auf anderen Plattformen funktioniert. Egal.

Danke für die Auskunft. Was könnte ich denn stattdessen benutzen?
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Du hast nicht lang genug gegoogelt. ;)

Code:
$> export LC_ALL=C;cat /dev/urandom | tr -dc A-Za-z0-9 | fold -w10 | head -n20
K7PWQR73Vl
Jah17X9exl
H8pfESVeXU
eezsakTwpk
uzyL4MD3Cv
8z169jhBO2
KmTCotuhYb
KXftjCI6Q2
jr58LqguR9
mdXsnq4Lxq
Dd35bfNM5a
U3hWIdTDqJ
yyuPSRhYQl
Kh2NpXikoS
4FyiMDeqQs
vXTgWB8fA7
7s4xETiXsa
CPF3AqaERV
Y4VZ5X1bUP
d2zbYsbqI2
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Code:
for ((i=0;i<20;i++)); do uuidgen; done
Safe, robust, quick, zeitgerecht & fettfrei.
 

Drobs

Carola
Registriert
23.05.08
Beiträge
115
Du hast nicht lang genug gegoogelt. ;)

Code:
$> export LC_ALL=C;cat /dev/urandom | tr -dc A-Za-z0-9 | fold -w10 | head -n20
K7PWQR73Vl
Jah17X9exl
H8pfESVeXU
eezsakTwpk
uzyL4MD3Cv
8z169jhBO2
KmTCotuhYb
KXftjCI6Q2
jr58LqguR9
mdXsnq4Lxq
Dd35bfNM5a
U3hWIdTDqJ
yyuPSRhYQl
Kh2NpXikoS
4FyiMDeqQs
vXTgWB8fA7
7s4xETiXsa
CPF3AqaERV
Y4VZ5X1bUP
d2zbYsbqI2

Ahhh, bis auf das export hatte ich das so gefunden ;)
Thx
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Was könnte ich denn stattdessen benutzen?

Die Möglichkeiten mit openssl und so hast du sicherlich schon gefunden (falls nicht: Google ist dein Freund).

Hier noch ne Möglichkeit mit jot (wohl nicht besonders effizient :D).
Code:
#!/bin/bash

PW_LENGTH=10
COUNT=20
NO_DUPS=true


RND_UC_CHAR='eval jot -r -c 1 A Z'
RND_LC_CHAR='eval jot -r -c 1 a z'
RND_NR='eval jot -r 1 0 9'




GEN_CHAR_CMD_ARR=(
    "$RND_UC_CHAR"
    "$RND_LC_CHAR"
    "$RND_NR"
)


for (( i = 0; i < $COUNT; i++ )); do
    unset genPw
    until [ $(echo $genPw | wc -c | tr -d ' ') -eq $PW_LENGTH ]; do
        while :;do
            tmpChar=$(${GEN_CHAR_CMD_ARR[$(( $RANDOM % 3 ))]})
            [ $NO_DUPS == true ] && { echo "$genPw" | grep -qv "$(echo "'$tmpChar'")"  && break; } || break
        done
        genPw=$genPw$tmpChar
    done
    echo "$genPw"
done

2011-11-03_1030.jpg

Ist wohl nur Spielerei, wa? Sichere PWs sind anders. ;)