#!/opt/local/bin/bash -
#-------------------------------------------------------------------------------
# passwd-gen.sh
# =============
#
# Scope Native
# Copyright (C) 2022 by RaySoft, Zurich, Switzerland
# License GNU General Public License (GPL) 2.0
# https://www.gnu.org/licenses/gpl2.txt
#
#-------------------------------------------------------------------------------
set -o 'noglob' -o 'pipefail' # -o 'xtrace' -o 'errexit'
#-------------------------------------------------------------------------------
CHARSET=({a..z} {A..Z} {0..9} _ , . ! ? \& % = / * + -)
LENGTH=25
AMOUNT=10
#-------------------------------------------------------------------------------
if [[ ${LENGTH} -lt 6 ]]; then
echo "$0[${LINENO}]: Password LENGTH must be at least 6 characters long."
exit 1
fi
if [[ ${AMOUNT} -lt 1 ]]; then
echo "$0[${LINENO}]: Password AMOUNT must be at least 1."
exit 1
fi
#-------------------------------------------------------------------------------
charset_length=${#CHARSET[*]}
for ((count_amount=0; ${count_amount} < ${AMOUNT}; count_amount++)); do
for ((passwd_lenght=0; ${passwd_lenght} < ${LENGTH}; passwd_lenght++)); do
index=$((${RANDOM} % ${charset_length}))
echo -n "${CHARSET[$index]}"
done
echo
done
#-------------------------------------------------------------------------------
exit 0