#!/bin/bash function sighandler { echo echo "Interrupting account creation" rm -f $TMPF exit 2 } trap sighandler INT TERM # Fixed parameters # NAME=`basename $0` COUNT=$1 PREFIX="od_test_" GROUP_NAME='od_test_group' TMPF=/tmp/.${NAME}.$$ NODE=$2 usage () { echo echo "Usage: ${NAME} count nodename" echo echo " ie. ${NAME} 1000 /Local/Default" echo echo " will delete ${GROUPNAME} and 1000 users " echo " from '${PREFIX}1' to '${PREFIX}1000'" echo echo "This tool assumes user 'diradmin' with password 'admin' for OD admin" echo "when talking to anything other than /Local/Default" exit 85 # WRONGARGS } if [ $# -ne 2 ]; then usage fi # if local node we don't need credentials if [ $NODE != "/Local/Default" ]; then OD_ADMIN="diradmin" OD_PASS="admin" fi echo "Deleting users ${PREFIX}1 to ${PREFIX}$COUNT" # Using a script file and feed it into dscl is much faster than # calling dscl everytime. # i=1 echo "Writing a temporary script ..." if [ -n "$OD_ADMIN" ]; then echo "auth $OD_ADMIN $OD_PASS" >> $TMPF fi while [ $i -le $COUNT ] do result=`dscl $NODE -list Users/${PREFIX}${i} 2> /dev/null` if [ $? -eq 0 ]; then echo "delete Users/${PREFIX}${i}" >> $TMPF printf "\r${PREFIX}${i} / ${COUNT}" fi i=`expr $i + 1` done echo echo "Deleting temporary test groups" if [ -n "$OD_ADMIN" ]; then result=`dseditgroup -q -o delete -n $NODE -u $OD_ADMIN -P $OD_PASS ${GROUP_NAME}1 2>&1 /dev/null` result=`dseditgroup -q -o delete -n $NODE -u $OD_ADMIN -P $OD_PASS ${GROUP_NAME}2 2>&1 /dev/null` else result=`dseditgroup -q -o delete -n $NODE ${GROUP_NAME}1 2>&1 /dev/null` result=`dseditgroup -q -o delete -n $NODE ${GROUP_NAME}2 2>&1 /dev/null` fi result=`dseditgroup -q -o delete com.apple.access_libMicro 2>&1 /dev/null` # Now do the real work # if [[ -f $TMPF ]]; then echo "Running dscl to delete users. Please be patient. This takes a while ..." if [[ -x /usr/sbin/slapconfig ]]; then /usr/sbin/slapconfig -setfullsyncmode no fi /usr/bin/time dscl ${NODE} < $TMPF if [[ -x /usr/sbin/slapconfig ]]; then /usr/sbin/slapconfig -setfullsyncmode yes fi fi # and now delete the temp file # rm -f $TMPF echo 'Finished'