iCloud Username

gary_owen
New Contributor II

I am using the following script as a EA to pull up the users iCloud account name, this works fine but if the machine hasn't updated inventory, or, if the user hasn't created a iCloud account then its just blank, I would like the script to report None if the iCloud account doesn't exist, could anyone modify the script to accommodate this ?

#!/bin/bash for user in $(ls /Users/ | grep -v Shared); do if [ -d "/Users/$user/Library/Application Support/iCloud/Accounts" ]; then Accts=$(find "/Users/$user/Library/Application Support/iCloud/Accounts" | grep '@' | awk -F'/' '{print $NF}') iCloudAccts+=(${user}: ${Accts}) fi done echo "<result>$(printf '%s ' "${iCloudAccts[@]}")</result>"
3 REPLIES 3

DBrowning
Valued Contributor II

@gary.owen Try this:

#!/bin/bash

for user in $(ls /Users/ | grep -v Shared); do
    if [ -d "/Users/$user/Library/Application Support/iCloud/Accounts" ]; then
        Accts=$(find "/Users/$user/Library/Application Support/iCloud/Accounts" | grep '@' | awk -F'/' '{print $NF}')
        iCloudAccts+=(${user}: ${Accts})
    else
        Accts="None"
        iCloudAccts+=(${user}: ${Accts})
    fi
done

echo "<result>$(printf '%s
' "${iCloudAccts[@]}")</result>"

gary_owen
New Contributor II

Thats great, Thanks

mrrobertbuss
New Contributor III

I tried to run this on a 2021 M1Pro Sonoma 14.4.1 and received these results: 

Last login: Fri Apr  5 10:51:22 on ttys000

robert.buss@W2LFT4NV52 ~ % #!/bin/bash

 

for user in $(ls /Users/ | grep -v Shared); do

    if [ -d "/Users/$user/Library/Application Support/iCloud/Accounts" ]; then

        Accts=$(find "/Users/$user/Library/Application Support/iCloud/Accounts" | grep '@' | awk -F'/' '{print $NF}')

        iCloudAccts+=(${user}: ${Accts})

    else

        Accts="None"

        iCloudAccts+=(${user}: ${Accts})

    fi

done

 

echo "<result>$(printf '%s

' "${iCloudAccts[@]}")</result>"

zsh: event not found: /bin/bash

robert.buss@W2LFT4NV52 ~ %

How do I correct this so it runs?