Posted on 07-16-2020 10:02 AM
Two years ago I found a Jamf Nation discussion about deleting user accounts and their home folders in the Users folder. The link to it is
https://www.jamf.com/jamf-nation/discussions/4502/remove-old-mobile-accounts.
I used the script from cbrewer, which was posted on Posted: 5/17/2012 at 3:17 PM CDT. I tied this script to a LaunchCtl and placed the plist file in the folder /Library/LaunchDaemons. The script and daemon worked fine until now. The script and daemon are running on MacOS High Sierra 10.13.6. I tested the script and daemon using the MacOS Mojave 10.14.6 verion. I ran a test yesterday and today on both Mac versions, and they are both producing an error. The error message is 'Operation failed with error: eDSOpenNodeFailed.' The script runs great in the terminal outside of the daemon. Has anyone come across this error? What does it mean? What command (dscl or find or other) might have caused the error? The script and plist are listed below...
PList
<?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>Label</key>
<string>com.removeusers</string>
<key>Program</key>
<string>/Library/Application Support/seu/scripts/rmfolders.sh</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>LaunchOnlyOnce</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/startup.stdout</string>
<key>StandardErrorPath</key>
<string>/tmp/startup.stderr</string>
</dict>
</plist>
Script...
userList=dscl . list /Users UniqueID | awk '$2 > 1000 {print $1}'
echo "Deleting account and home directory for the following users..."
for a in $userList ; do
find /Users -type d -maxdepth 1 -mindepth 1 -not -name "." | grep "$a"
if [[ $? == 0 ]]; then
dscl . delete /Users/"$a" #delete the account
if [ -d "/Users/$a" ]; then
echo "Directory /Users/$a exists."
rm -r /Users/"$a" #delete home directory
fi
fi
done
Would a security update to the operating system cause the error?
Posted on 07-16-2020 12:03 PM
@jcshofner Unless you are dealing with systems older than macOS 10.13 you should be using sysadminctl
to delete accounts: https://osxbytes.wordpress.com/2017/03/15/how-to-remove-accounts-cleanly/
Posted on 03-01-2022 12:03 PM
This is what I came up with. Seems to be working properly. Please test and let me know if you see something I missed... I left in the user account names that I keep so you can see where to add in yours...
#!/bin/bash
for home in $(dscl . list /Users | grep -viE '(_|root|micro|basicuser|basicadminuser|jamf)')
do sysadminctl -deleteUser $home
done
exit 0