a cli app that simply generates a random 64 character alphanumeric string.
Project description
a cli app that simply generates 64 random alphanumeric characters.
for example:
$ random vBDkKl1JqyeUu4n8ygrF0JflP6odhRnYSaxtND1dUSauNnUj7JDI9DHEYGs9FHhk
I am kind of sick and tired of not being able to generate a simple alphanumeric random string for passwords or what not without relying on a web browser.
I really like something in the terminal so that it is kind of temporary yet I can copy and paste it when I need it, and be able to simply close the terminal window when I am done.
I find it surprising that there is no simple cli app to do this… I resort to doing things like dd if=/dev/urandom count=1 | base64, but this is not ideal, it is a long command and just not very configurable. most of the time I just want a simple alphanumeric string but base64 gives all kinds of things, which is great for what it is, but not really intended for what I am doing most of the time.
so here it is, a purpose built cli app just for generating random alphanumeric strings.
security
random_cli is entirely hosted on the client machine, no internet connection is ever used after installation.
randomness is provided by the python secrets module, introduced in python 3.6: <https://docs.python.org/3.6/library/secrets.html>.
the secrets module uses best source of cryptographic randomness provided by the operating system. on linux, that may be /dev/urandom. they are suitable for managing data such as passwords, account authentication, security tokens, and related secrets.
disclaimer: this project has not been security audited. while secrets module is cryptographically strong, you should do your own assessment if this project is suitable for your specific use case.
install
random_cli requires python 3.6 or higher as random_cli uses the new secrets module introduced in python 3.6.
you can install random_cli from pypi, or from source.
to install system wide from pypi with pip:
sudo python3 -m pip install random_cli
I use “flit” to build and publish random_cli, so “flit” is required if you want install from source:
sudo python3 -m pip install flit
then you can build and install random_cli from source:
git clone https://github.com/sunnz/random-cli.py random_cli cd random_cli flit install
that would install random_cli into your home directory.
to install system wide from source, instead of flit install, run:
sudo su FLIT_ROOT_INSTALL=1 flit install exit
usage
usage: random [OPTIONS] [LENGTH]
options:
--type TEXT alphanumeric (default), print, letters, lower, upper, hex --help Show this message and exit.
options and length is optional, default to 64 characters.
examples:
$ random 6aNaxiFpAtNCYAnyb7LjBCVS9ktQL2QNj1qDYUCvrUDctY4e4DFWMKz23CPmY0Of $ random 10 8WsApVMknV $ random --type print 0e;:e&%cghH-|/fo4L$tSrn&O'nOavWSfl"\1pW9Q4tO~}-eS2?C4N,PKv/XEX^? $ random --type letters UYUgcmuILkxiIsdHDRPOuCcxaOSIHryJHvTHRtOwPRnSqlsTIjTXheSVonhsPpWh $ random --type lower quthvsoxiqpipnigvzsjxugmbryczokqffyzmejhibktoitaszhtexgrptodgqnw $ random --type upper SAVGDFKDJRRSUFOGQOWYGEBKLPHMQXSSRCVLQHXZCAXRVJYOZERIMCPIINMZWDQK $ random --type hex 85Bb8BaA8c3fbBcdbF3BAF7a7EeE0E8Aa2D22b87BA0EC315603A6cCaC27dBF9A
random_cli generates 64 random alphanumeric characters by default if no options and length are given.
you should not get exactly the same results as above examples as random_cli picks random characters from the given options. (you would be extremely lucky if you do, as that equates to winning the lotto serveral times in a row!!)
runtime error
if you see something like this error:
Traceback (most recent call last): ... RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. ...
this can be fixed by exporting the locale to the encoding of choice. for example, I am using australian english, so I would set my locale to en_AU.utf8 by running the following:
export LC_ALL=en_AU.utf8 export LANG=en_AU.utf8
the set the locale permanently, this repo provides a script locale.sh under shell-scripts. copy it to /etc/profile.d/locale.sh.
see python 3 surrogates for more information: <http://click.pocoo.org/6/python3/#python3-surrogates>.
development
setup virtualenv:
python3 -m venv venv source venv/bin/activate python -m pip install -r requirements.txt
from this point we assume that python refers to python 3 in virtualenv.
to run unit test (via python 3 pytest module):
python -m pytest --flake8 --cache-clear -v
to build command for testing (e.g. within virtualenv):
flit install
after which you can run it by running random in the terminal in virtualenv. to rebuild simply run flit install again.
contribute
you are very welcomed to open issues and/or submit pull requests on github: <https://github.com/sunnz/random-cli.py>.
this project follows standard-readme specification: <https://github.com/RichardLitt/standard-readme>.
if you find this project useful and would like to tip me over bitcoin, here’s my bitcoin tipping address: 1P1v6k1Qr9Ad3fMLrtgj5PQjYLyZdjqLZP. 100% optional, it would totally be an awesome encouragement, no matter what the amount is! :)
licence
isc (c) sunnz <https://github.com/sunnz>.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for random_cli-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 665ffdd7ebf0b5cce5ae22f7ca2bdbb5bd00c2d2a9a939e5cfd0cea6ee25e3e6 |
|
MD5 | 79234b766902fa631849c6f3f8383ae8 |
|
BLAKE2b-256 | ae18929b2967e9506aedd9e68c6a53df921b4bdd0041b2313275800c01a92ba3 |