1#!/bin/bash
2
3function sighandler {
4  echo 
5  echo "Interrupting account creation"
6  rm -f $TMPF
7  exit 2
8}
9
10trap sighandler INT TERM
11
12# Fixed parameters
13#
14NAME=`basename $0`
15COUNT=$1
16PREFIX="od_test_"
17GROUP_NAME='od_test_group'
18TMPF=/tmp/.${NAME}.$$
19NODE=$2
20
21usage () {
22  echo
23  echo "Usage: ${NAME} count nodename"
24  echo 
25  echo "   ie. ${NAME} 1000 /Local/Default"
26  echo
27  echo "       will delete ${GROUPNAME} and 1000 users "
28  echo "       from '${PREFIX}1' to '${PREFIX}1000'"
29  echo
30  echo "This tool assumes user 'diradmin' with password 'admin' for OD admin"
31  echo "when talking to anything other than /Local/Default"
32  exit 85 # WRONGARGS
33}
34
35if [ $# -ne 2 ]; then
36  usage
37fi
38
39# if local node we don't need credentials
40if [ $NODE != "/Local/Default" ]; then
41  OD_ADMIN="diradmin"
42  OD_PASS="admin"
43fi
44
45echo "Deleting users ${PREFIX}1 to ${PREFIX}$COUNT"
46
47# Using a script file and feed it into dscl is much faster than
48# calling dscl everytime.
49# 
50i=1
51echo "Writing a temporary script ..."
52if [ -n "$OD_ADMIN" ]; then
53  echo "auth $OD_ADMIN $OD_PASS" >> $TMPF
54fi
55
56while [ $i -le $COUNT ]
57do
58  result=`dscl $NODE -list Users/${PREFIX}${i} 2> /dev/null`
59  if [ $? -eq 0 ]; then
60    echo "delete Users/${PREFIX}${i}" >> $TMPF
61    printf "\r${PREFIX}${i} / ${COUNT}"
62  fi
63  i=`expr $i + 1` 
64done
65echo 
66
67echo "Deleting temporary test groups"
68if [ -n "$OD_ADMIN" ]; then
69  result=`dseditgroup -q -o delete -n $NODE -u $OD_ADMIN -P $OD_PASS ${GROUP_NAME}1 2>&1 /dev/null`
70  result=`dseditgroup -q -o delete -n $NODE -u $OD_ADMIN -P $OD_PASS ${GROUP_NAME}2 2>&1 /dev/null`
71else
72  result=`dseditgroup -q -o delete -n $NODE ${GROUP_NAME}1 2>&1 /dev/null`
73  result=`dseditgroup -q -o delete -n $NODE ${GROUP_NAME}2 2>&1 /dev/null`
74fi
75
76result=`dseditgroup -q -o delete com.apple.access_libMicro 2>&1 /dev/null`
77
78# Now do the real work
79#
80if [[ -f $TMPF ]]; then
81  echo "Running dscl to delete users. Please be patient. This takes a while ..."
82  if [[ -x /usr/sbin/slapconfig ]]; then
83    /usr/sbin/slapconfig -setfullsyncmode no
84  fi
85
86  /usr/bin/time dscl ${NODE} < $TMPF
87
88  if [[ -x /usr/sbin/slapconfig ]]; then
89    /usr/sbin/slapconfig -setfullsyncmode yes
90  fi
91fi
92
93# and now delete the temp file
94#
95rm -f $TMPF
96
97echo 'Finished'
98
99