Skip to content

Instantly share code, notes, and snippets.

@nathanhaigh
Created July 5, 2022 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nathanhaigh/b8d260229fb5c16f787d10c0d519be6b to your computer and use it in GitHub Desktop.
Save nathanhaigh/b8d260229fb5c16f787d10c0d519be6b to your computer and use it in GitHub Desktop.
Generate user account
#!/usr/bin/env bash
#####
# Set default command line options
#####
USERNAME_PREFIX=user
USERNAME_SUFFIX_START=1
USERNAME_SUFFIX_END=100
USERNAME_SUFFIX_ZERO_PADDING_LENGTH=4
usage="USAGE: $(basename $0) [-h] [-u <user_prefix>] [-s <start>] [-e <end>] [-z <zero_padding>]
User creation.
where:
-h Show this help text
-u Username prefix (default: ${USERNAME_PREFIX})
-s Username suffix start number (default: ${USERNAME_SUFFIX_START})
-e Username suffix end number (default: ${USERNAME_SUFFIX_END})
-z Zero-pad username suffix number to this length (default:${USERNAME_SUFFIX_ZERO_PADDING_LENGTH})"
PWGEN_ARGS=()
#####
# Parse command line options
#####
while getopts ":hu:s:e:z:" opt; do
case $opt in
h) >&2 echo "${usage}"
exit
;;
u) USERNAME_PREFIX=${OPTARG}
;;
s) USERNAME_SUFFIX_START=${OPTARG}
;;
e) USERNAME_SUFFIX_END=${OPTARG}
;;
z) USERNAME_SUFFIX_ZERO_PADDING_LENGTH=${OPTARG}
;;
?) >&2 printf "Illegal option: '-%s'\n" "${OPTARG}"
>&2 echo "{$usage}"
exit 1
;;
:) >&2 echo "Option -${OPTARG} requires an argument."
>&2 echo "${usage}"
exit 1
;;
*) >&2 echo "${usage}"
exit
;;
esac
done
for i in $(seq --format "%0${USERNAME_SUFFIX_ZERO_PADDING_LENGTH}g" ${USERNAME_SUFFIX_START} ${USERNAME_SUFFIX_END}); do
useradd --home-dir /home/${USERNAME_PREFIX}${i} --shell /bin/bash ${USERNAME_PREFIX}${i}
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment