Guest User

Untitled

a guest
Apr 9th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. #/bin/bash
  2.  
  3. # zmcreateusers
  4. # Mass create zimbra accounts
  5. #
  6. # AUTHORS: Caio Corrêa, Thompson Alves
  7. # LAST UPDATED: 2011/12/02
  8. #
  9. # Version 1.2: Added the report at the ending
  10. # Version 1.1: Added security check of alias and username
  11. # Version 1.0: First release, creates accounts and aliases
  12.  
  13. # ========================= CAVEAT ===============================
  14. # The file you must pass as a parameter MUST have this format
  15. # for each account you wish to create
  16. #
  17. # username:Display Name:Given Name:Surname:PASSWORD:alias
  18. #
  19. # Note that the ALIAS is optional
  20.  
  21. DOMAIN="yourdomain.com"
  22.  
  23. # Vars used for the end report
  24. SUCCESS="0"
  25. ERROR="0"
  26. RESUMEFILE="/tmp/zmcreateresume"
  27. ALIASRESUMEFILE="/tmp/zmaliascreateresume"
  28.  
  29. # Getopts to get the debug option
  30. while getopts ":d" opt; do
  31. case $opt in
  32. d) DEBUG="echo";;
  33. \?) echo "Invalid option -$OPTARG"
  34. exit 1;;
  35. esac
  36. done
  37. shift $((OPTIND-1))
  38.  
  39. # Check if the user passed one and only one parameter
  40. if [ "$#" -ne 1 ]; then
  41. echo "USAGE: $0 [-d] <file>"
  42. exit 1
  43. fi
  44.  
  45. FILE=$1
  46.  
  47. # Check if the passed parameter is a regular file
  48. if [ ! -f "$FILE" ]; then
  49. echo "\"$FILE\" does not exist or is not a regular file"
  50. exit 1
  51. fi
  52.  
  53. # Loop each line, parse it and create each user
  54. while read line; do
  55. USERNAME=$(echo $line | cut -d":" -f1)
  56. DISPLAYNAME=$(echo $line | cut -d":" -f2)
  57. GIVENNAME=$(echo $line | cut -d":" -f3)
  58. SURNAME=$(echo $line | cut -d":" -f4)
  59. PASSWD=$(echo $line | cut -d":" -f5)
  60. ALIAS=$(echo $line | cut -d":" -f6 | tr [A-Z] [a-z])
  61.  
  62. echo $DISPLAYNAME
  63.  
  64. # Check if $USERNAME already exists, if so, skip
  65. CHECKNAME="$(zmprov ga $USERNAME@$DOMAIN displayName 2> /dev/null | grep Name | cut -d" " -f2-)"
  66. if [ ! -z "$CHECKNAME" ]; then
  67. echo "\"$USERNAME\" - Account Already Exists: \"$CHECKNAME\"" | tee -a $RESUMEFILE
  68. ERROR=$((ERROR+1))
  69. continue
  70. fi
  71.  
  72. $DEBUG zmprov ca $USERNAME@$DOMAIN $PASSWD displayName "$DISPLAYNAME" givenName "$GIVENNAME" sn "$SURNAME" zimbraAccountStatus active
  73.  
  74. # Check if the user was correctly created, if not, skip
  75. if [ "$?" -ne 0 ]; then
  76. echo "$USERNAME - Error Creating Account" >> $RESUMEFILE
  77. ERROR=$((ERROR+1))
  78. continue
  79. else
  80. SUCCESS=$((SUCCESS+1))
  81. fi
  82.  
  83. # Check if the there is an ALIAS in the file, if so, add alias
  84. if [ ! -z "$ALIAS" ]; then
  85. # Check if the alias already exists
  86. CHECKALIAS="$(zmprov ga $ALIAS@$DOMAIN displayName 2> /dev/null | grep Name | cut -d" " -f2-)"
  87. if [ ! -z "$CHECKALIAS" ]; then
  88. echo "\"$ALIAS\" ($USERNAME) - Alias Already Exists: \"$CHECKALIAS\"" | tee -a $ALIASRESUMEFILE
  89. else
  90. $DEBUG zmprov aaa $USERNAME@$DOMAIN $ALIAS@$DOMAIN
  91. fi
  92. fi
  93. done < $FILE
  94.  
  95. echo
  96. echo "============================================="
  97. echo "Accounts Succesfully Created: $SUCCESS"
  98. echo "Accounts Not Created: $ERROR"
  99. echo "============================================="
  100. if [ "$ERROR" -ne 0 ]; then
  101. echo "Accounts with error:"
  102. echo
  103. cat $RESUMEFILE
  104. echo
  105.  
  106. rm -f $RESUMEFILE
  107. fi
  108. if [ -f $ALIASRESUMEFILE ]; then
  109. echo "============================================="
  110. echo "Alias with error:"
  111. echo
  112. cat $ALIASRESUMEFILE
  113. echo
  114.  
  115. rm -f $ALIASRESUMEFILE
  116. fi
Add Comment
Please, Sign In to add comment