Skip to main content
Question

Delete Users Script


Forum|alt.badge.img+1

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?

2 replies

Forum|alt.badge.img+8
  • Contributor
  • 33 replies
  • July 28, 2022

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

 


Forum|alt.badge.img+5
  • New Contributor
  • 5 replies
  • February 14, 2023
_gsm wrote:

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


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings