Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #/bin/bash
- # zmcreateusers
- # Mass create zimbra accounts
- #
- # AUTHORS: Caio Corrêa, Thompson Alves
- # LAST UPDATED: 2011/12/02
- #
- # Version 1.2: Added the report at the ending
- # Version 1.1: Added security check of alias and username
- # Version 1.0: First release, creates accounts and aliases
- # ========================= CAVEAT ===============================
- # The file you must pass as a parameter MUST have this format
- # for each account you wish to create
- #
- # username:Display Name:Given Name:Surname:PASSWORD:alias
- #
- # Note that the ALIAS is optional
- DOMAIN="yourdomain.com"
- # Vars used for the end report
- SUCCESS="0"
- ERROR="0"
- RESUMEFILE="/tmp/zmcreateresume"
- ALIASRESUMEFILE="/tmp/zmaliascreateresume"
- # Getopts to get the debug option
- while getopts ":d" opt; do
- case $opt in
- d) DEBUG="echo";;
- \?) echo "Invalid option -$OPTARG"
- exit 1;;
- esac
- done
- shift $((OPTIND-1))
- # Check if the user passed one and only one parameter
- if [ "$#" -ne 1 ]; then
- echo "USAGE: $0 [-d] <file>"
- exit 1
- fi
- FILE=$1
- # Check if the passed parameter is a regular file
- if [ ! -f "$FILE" ]; then
- echo "\"$FILE\" does not exist or is not a regular file"
- exit 1
- fi
- # Loop each line, parse it and create each user
- while read line; do
- USERNAME=$(echo $line | cut -d":" -f1)
- DISPLAYNAME=$(echo $line | cut -d":" -f2)
- GIVENNAME=$(echo $line | cut -d":" -f3)
- SURNAME=$(echo $line | cut -d":" -f4)
- PASSWD=$(echo $line | cut -d":" -f5)
- ALIAS=$(echo $line | cut -d":" -f6 | tr [A-Z] [a-z])
- echo $DISPLAYNAME
- # Check if $USERNAME already exists, if so, skip
- CHECKNAME="$(zmprov ga $USERNAME@$DOMAIN displayName 2> /dev/null | grep Name | cut -d" " -f2-)"
- if [ ! -z "$CHECKNAME" ]; then
- echo "\"$USERNAME\" - Account Already Exists: \"$CHECKNAME\"" | tee -a $RESUMEFILE
- ERROR=$((ERROR+1))
- continue
- fi
- $DEBUG zmprov ca $USERNAME@$DOMAIN $PASSWD displayName "$DISPLAYNAME" givenName "$GIVENNAME" sn "$SURNAME" zimbraAccountStatus active
- # Check if the user was correctly created, if not, skip
- if [ "$?" -ne 0 ]; then
- echo "$USERNAME - Error Creating Account" >> $RESUMEFILE
- ERROR=$((ERROR+1))
- continue
- else
- SUCCESS=$((SUCCESS+1))
- fi
- # Check if the there is an ALIAS in the file, if so, add alias
- if [ ! -z "$ALIAS" ]; then
- # Check if the alias already exists
- CHECKALIAS="$(zmprov ga $ALIAS@$DOMAIN displayName 2> /dev/null | grep Name | cut -d" " -f2-)"
- if [ ! -z "$CHECKALIAS" ]; then
- echo "\"$ALIAS\" ($USERNAME) - Alias Already Exists: \"$CHECKALIAS\"" | tee -a $ALIASRESUMEFILE
- else
- $DEBUG zmprov aaa $USERNAME@$DOMAIN $ALIAS@$DOMAIN
- fi
- fi
- done < $FILE
- echo
- echo "============================================="
- echo "Accounts Succesfully Created: $SUCCESS"
- echo "Accounts Not Created: $ERROR"
- echo "============================================="
- if [ "$ERROR" -ne 0 ]; then
- echo "Accounts with error:"
- echo
- cat $RESUMEFILE
- echo
- rm -f $RESUMEFILE
- fi
- if [ -f $ALIASRESUMEFILE ]; then
- echo "============================================="
- echo "Alias with error:"
- echo
- cat $ALIASRESUMEFILE
- echo
- rm -f $ALIASRESUMEFILE
- fi
Add Comment
Please, Sign In to add comment