/home/alex/dev/passwd-gen.sh (1)

From RaySoft
#!/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

Usage

~/dev/passwd-gen.sh