-
-
Save palmerc/5e8dfb37ed46b01c9a6f56ecd58727a7 to your computer and use it in GitHub Desktop.
Updating a user's picture from a script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
declare -x USERNAME="$1" | |
declare -x USERPIC="$2" | |
declare -r DSIMPORT_CMD="/usr/bin/dsimport" | |
declare -r ID_CMD="/usr/bin/id" | |
declare -r MAPPINGS='0x0A 0x5C 0x3A 0x2C' | |
declare -r ATTRS='dsRecTypeStandard:Users 2 dsAttrTypeStandard:RecordName externalbinary:dsAttrTypeStandard:JPEGPhoto' | |
if [ ! -f "${USERPIC}" ]; then | |
echo "User image required" | |
fi | |
# Check that the username exists - exit on error | |
${ID_CMD} "${USERNAME}" &>/dev/null || ( echo "User does not exist" && exit 1 ) | |
declare -r PICIMPORT="$(mktemp -t ${USERNAME}_dsimport)" || exit 1 | |
trap 'rm -f ${PICIMPORT}' EXIT | |
printf "%s %s \n%s:%s" "${MAPPINGS}" "${ATTRS}" "${USERNAME}" "${USERPIC}" >"${PICIMPORT}" | |
${DSIMPORT_CMD} "${PICIMPORT}" /Local/Default M && | |
echo "Successfully imported ${USERPIC} for ${USERNAME}." |
They might be unrelated - as in - there is more to it since I think the pic you're thinking of isn't the Login pic, but the iCloud shared pic. It will require investigation.
Yeap. You are right, I am also investigating, with no success still.
If you go to the iCloud page. It has a picture there. and even if adding a picture manually, sometimes it is removed.
Maybe the pictures are removed when I run something like this:
sudo dscl . delete /Users/${USER} JPEGPhoto
sudo dscl . delete /Users/${USER} Picture
So, it means that it is possible to change this picture. Now what is making me crazy is how we can set it back. haha
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, nice script. Thanks for sharing it.
It worked flawlessly on Monterey except by the fact that it does not change the user's picture on the System Preferences.
Do you know if it is possible to update the picture there too?