Skip to main content

We have our macs setup with a local admin account and student login with their AD info and creates a mobile account. Does anyone have a script they use that works to delete all the users minus the admin account?

This works for me. I have not tried it with mobile accounts.

You can manually set the age in the script or use $4 in the policy.

Set the profile paths you don't want deleted. You can add more if needed.

#!/bin/bash AGE=## # Delete /Users/ folders inactive longer than this many days # CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 4 AND, IF SO, ASSIGN TO "AGE" if [ "$4" != "" ]; then AGE=$4 fi KEEP=("/Users/user1" "/Users/user2" "/Users/user3") #--End variables-- ### Delete Inactive Users ### if [[ ${UID} -ne 0 ]]; then echo "$0 must be run as root." exit 1 fi USERLIST=$(/usr/bin/find /Users -type d -maxdepth 1 -mindepth 1 -not -name "." -mtime +"${AGE}") echo "Performing inactive user cleanup" for a in ${USERLIST}; do if ! [[ ${KEEP[*]} =~ "$a" ]]; then echo "Deleting inactive (over ${AGE} days) account and home directory: $a" # delete user /usr/bin/dscl . delete "$a" > /dev/null 2>&1 # delete home folder /bin/rm -r "$a" continue else echo "SKIPPING $a" fi done echo "Cleanup complete" exit 0

 


This works for me. I have not tried it with mobile accounts.

You can manually set the age in the script or use $4 in the policy.

Set the profile paths you don't want deleted. You can add more if needed.

#!/bin/bash AGE=## # Delete /Users/ folders inactive longer than this many days # CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 4 AND, IF SO, ASSIGN TO "AGE" if [ "$4" != "" ]; then AGE=$4 fi KEEP=("/Users/user1" "/Users/user2" "/Users/user3") #--End variables-- ### Delete Inactive Users ### if [[ ${UID} -ne 0 ]]; then echo "$0 must be run as root." exit 1 fi USERLIST=$(/usr/bin/find /Users -type d -maxdepth 1 -mindepth 1 -not -name "." -mtime +"${AGE}") echo "Performing inactive user cleanup" for a in ${USERLIST}; do if ! [[ ${KEEP[*]} =~ "$a" ]]; then echo "Deleting inactive (over ${AGE} days) account and home directory: $a" # delete user /usr/bin/dscl . delete "$a" > /dev/null 2>&1 # delete home folder /bin/rm -r "$a" continue else echo "SKIPPING $a" fi done echo "Cleanup complete" exit 0

 


What do I have to specify so that the accounts are deleted after logging out? Or what happens if I set $4 to 0?

Thanks in Advance
Robert