tr: Illegal byte sequence

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von Drobs, 02.11.11.

  1. Drobs

    Drobs Carola

    Dabei seit:
    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.
     
  2. Rastafari

    Rastafari deaktivierter Benutzer

    Dabei seit:
    10.03.05
    Beiträge:
    18.151
    "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".)
     
  3. Drobs

    Drobs Carola

    Dabei seit:
    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?
     
  4. fyysh

    fyysh Schweizer Glockenapfel

    Dabei seit:
    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
     
  5. Rastafari

    Rastafari deaktivierter Benutzer

    Dabei seit:
    10.03.05
    Beiträge:
    18.151
    Code:
    for ((i=0;i<20;i++)); do uuidgen; done
    Safe, robust, quick, zeitgerecht & fettfrei.
     
  6. Drobs

    Drobs Carola

    Dabei seit:
    23.05.08
    Beiträge:
    115
    Ahhh, bis auf das export hatte ich das so gefunden ;)
    Thx
     
  7. fyysh

    fyysh Schweizer Glockenapfel

    Dabei seit:
    25.01.10
    Beiträge:
    1.386
    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. ;)