]> git.saurik.com Git - apple/xnu.git/blobdiff - tools/tests/libMicro/od_account_delete.sh
xnu-1699.22.73.tar.gz
[apple/xnu.git] / tools / tests / libMicro / od_account_delete.sh
diff --git a/tools/tests/libMicro/od_account_delete.sh b/tools/tests/libMicro/od_account_delete.sh
new file mode 100644 (file)
index 0000000..00ea4e2
--- /dev/null
@@ -0,0 +1,98 @@
+#!/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'
+