#!/bin/bash # Simple password generator. # Requires: xclip, qrencode NC='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' msg_info() { echo -e "${GREEN}$1${NC}" } msg_warn() { echo -e "${YELLOW}$1${NC}" } msg_error() { echo -e "${RED}$1${NC}" } print_help() { echo echo "genpass - a simple password generator" echo echo "USAGE:" echo " trans [OPTION ...]" echo echo "where OPTIONs are:" echo " -c | --clipboard:" echo " copy the generated password to clipboard (needs xclip)" echo " -q | --qrcode:" echo " generate a qrcode of the password (needs qrencode) and" echo " print it to stdout (UTF8 format)" echo " -l | --length :" echo " provide password length (defaults to 32)" echo " -h | -h | --help:" echo " print this help message" echo } CLIPBOARD=0 QRCODE=0 LENGTH=32 while [ $# != 0 ] do case "$1" in -c|--clipboard) CLIPBOARD=1 ;; -q|--qrcode) QRCODE=1 ;; -l|--length) shift LENGTH=$1 ;; -h|--help) print_help ;; *) msg_error "$1: invalid option" print_help exit 1 ;; esac shift done PASSWD="$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c $LENGTH)" if [ $CLIPBOARD -eq 1 ]; then echo "$PASSWD" | xclip -in -selection clipboard elif [ $QRCODE -eq 1 ]; then echo "$PASSWD" | qrencode --size=5 --type=UTF8 -o - else echo "$PASSWD" fi exit 0