[GTALUG] tr: Illegal byte sequence
Mauro Souza
thoriumbr at gmail.com
Wed Sep 26 10:45:20 EDT 2018
I put a base64 after dd, and cut in place of head. Never had any issue...
On Wed, Sep 26, 2018, 11:41 Giles Orr via talk <talk at gtalug.org> 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/
> gilesorr at gmail.com
> ---
> Talk Mailing List
> talk at gtalug.org
> https://gtalug.org/mailman/listinfo/talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://gtalug.org/pipermail/talk/attachments/20180926/fac11089/attachment.html>
More information about the talk
mailing list