#!/bin/bash | |
# This script works well for removing local accounts that are older than 1 day. | |
# Obviously the 1 day timeframe can be modified (-mtime +1). | |
# Runs using Launch Daemon - /Library/LaunchDaemons/edu.org.deleteaccounts.plist | |
# version .7 | |
DATE=`date "+%Y-%m-%d %H:%M:%S"` | |
# Don't delete local accounts | |
keep1="/Users/admin" | |
keep2="/Users/admin2" | |
keep3="/Users/Shared" | |
currentuser=`ls -l /dev/console | cut -d " " -f 4` | |
keep4=/Users/$currentuser | |
USERLIST=`/usr/bin/find /Users -type d -maxdepth 1 -mindepth 1 -mtime +1` | |
for a in $USERLIST ; do | |
[[ "$a" == "$keep1" ]] && continue #skip admin | |
[[ "$a" == "$keep2" ]] && continue #skip admin2 | |
[[ "$a" == "$keep3" ]] && continue #skip shared | |
[[ "$a" == "$keep4" ]] && continue #skip current user | |
# Log results | |
echo ${DATE} - "Deleting account and home directory for" $a >> "/Library/Logs/deleted user accounts.log" | |
# Delete the account | |
/usr/bin/dscl . -delete $a | |
# Delete the home directory | |
# dscl . list /Users UniqueID | awk '$2 > 500 { print $1 }' | grep -v Shared | grep -v admin | grep -v admin1 | grep -v .localized | |
/bin/rm -rf $a | |
done | |
exit 0 |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Disabled</key> | |
<false/> | |
<key>Label</key> | |
<string>edu.org.deleteaccounts</string> | |
<key>ProgramArguments</key> | |
<array> | |
<string>/Library/Scripts/delete-accounts.sh</string> | |
</array> | |
<key>RunAtLoad</key> | |
<true/> | |
<key>StartCalendarInterval</key> | |
<dict> | |
<key>Hour</key> | |
<integer>7</integer> | |
<key>Minute</key> | |
<integer>30</integer> | |
</dict> | |
<key>StartInterval</key> | |
<integer>86400</integer> | |
</dict> | |
</plist> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment