The Locale indirectly controls the character encoding on the shell. that is the reason why the locale settings have to do with this. I may be wrong, but I believe the shell on the MAC is hardcoded with a specific character encoding, probably 7 bit ascii. Try changing your count to 128.
Bill On Wed, Sep 26, 2018 at 10:41 AM Giles Orr via talk <[email protected]> wrote: > I wrote a random password generator shell script, the core of which is > this one-liner: > > dd if=/dev/urandom bs=1 count=256 2>/dev/null | tr -dc > 'A-Za-z0-9!@$%^&*(){}[]=+-_/?\|~`' | head -c 32 > > The very ugly string 'A-Za-z0-9!@$%^&*(){}[]=+-_/?\|~`' is the ALLOWED > values. The two counts are replaced by variables, the first 'count=' > needing to be a lot bigger than the final '-c <number>' which is the length > of the password generated. The size difference is necessary because 'tr' > throws away a lot of values. > > I've never had a problem with this on Linux, but on a Mac under some > circumstances we get: > > tr: Illegal byte sequence > > My coworker, who's also using the script, always got that error. It seems > to come down to locale settings. Mine by default are: > > $ locale > LANG="en_CA.UTF-8" > LC_COLLATE="en_CA.UTF-8" > LC_CTYPE="en_CA.UTF-8" > LC_MESSAGES="en_CA.UTF-8" > LC_MONETARY="en_CA.UTF-8" > LC_NUMERIC="en_CA.UTF-8" > LC_TIME="en_CA.UTF-8" > LC_ALL= > > My co-worker's settings are: > > LANG="en_US.UTF-8" > LC_COLLATE="en_US.UTF-8" > LC_CTYPE="en_US.UTF-8" > LC_MESSAGES="en_US.UTF-8" > LC_MONETARY="en_US.UTF-8" > LC_NUMERIC="en_US.UTF-8" > LC_TIME="en_US.UTF-8" > LC_ALL="en_US.UTF-8" > > A reliable fix (so far ...): > > $ export LC_CTYPE=C > $ export LC_ALL=C > $ dd if=/dev/urandom bs=1 count=256 2>/dev/null | tr -dc > 'A-Za-z0-9!@$%^&*(){}[]=+-_/?\|~`' | head -c 32 > z%V;d9uZfWLTgsT*J]Bz`mAmA > > I'd really like to understand what the problem is, why 'tr' barfs, and > what the 'locale' settings have to do with this. Thanks. > > (Should anyone have arguments against this as a method of password > generation, I'll entertain those too. And yes, I'm aware of 'apg' but it's > not readily available for Mac and this is much lighter weight.) > > -- > Giles > https://www.gilesorr.com/ > [email protected] > --- > Talk Mailing List > [email protected] > https://gtalug.org/mailman/listinfo/talk >
--- Talk Mailing List [email protected] https://gtalug.org/mailman/listinfo/talk
