#!/usr/bin/ksh93 ################################################################ function usagemsg { print "" print "Program: mkstring" print "" print "This script generates a random string of characters" print "" print "Usage: ${1##*/} [-?] [-v] [-V] [-m minimum] [-x maximum]" print "" print " Where '-m minimum' = Specify the minimum number of characters" print " to be returned in the random string (Default:10)" print " '-x maximum' = Specify the maximum number of characters" print " to be returned in the random string (Default:10)" print " '-l' = Only return lower case characters in random string" print " '-u' = Only return upper case characters in random string" print " '-v' = Verbose mode" print " '-V' = Very Verbose Mode" print "" print "Author: Dana French (dfrench@mtxia.com)" print "" print "\"AutoContent\" enabled" print "" } ################################################################ ################################################################ TRUE="1" FALSE="0" CHARS=( a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ) CNUM="52" VERBOSE="${FALSE}" VERYVERB="${FALSE}" MIN="10" MAX="${MIN}" while getopts ":vVulm:x:" OPTION do case "${OPTION}" in 'v') VERBOSE="${TRUE}";; 'V') VERYVERB="${TRUE}";; 'm') MIN="${OPTARG}";; 'x') MAX="${OPTARG}";; 'u') typeset -u CHARS;; 'l') typeset -l CHARS;; '?') usagemsg "${0}" && exit 1 ;; esac done shift $(( ${OPTIND} - 1 )) trap "usagemsg ${0}" EXIT if (( MAX < MIN )) then print -u 2 "ERROR: run \"${0} -?\" for help and usage}" exit 1 fi trap "-" EXIT (( VERYVERB == TRUE )) && set -x ################################################################ (( MAX != MIN )) && (( MAX++ )) (( MIN == MAX )) && MAXLEN=${MIN} || MAXLEN=$(( MIN + ( RANDOM % ( MAX - MIN ) ) )) for (( i=0; i < MAXLEN; ++i )) do STRING="${STRING}${CHARS[${RANDOM}%${CNUM}]}" done print ${STRING}