Posted on 08-03-2021 08:30 AM
Searched Jamf Nation but couldn't find anything close enough to my use case.
I'm querying the Jamf API for computer IDs by way of usernames:
jamfUserURL="https://[company].jamfcloud.com/JSSResource/users/name/$username"
computerID="$(curl -X GET -s -k -u "$jamfUser":"$jamfPass" "$jamfUserURL" | xmllint --xpath '/user/links/computers/computer/id/text()' - )"
echo $computerID
This works great except for end users who have more than one computer in the environment. Then I get a result with all IDs combined into one return. Would it make sense to stick this in a for loop to iterate through the multiple IDs? If so, can someone please assist?
Solved! Go to Solution.
Posted on 08-03-2021 11:47 AM
Thanks @boberito! I'll give this a run and see what happens.
I actually stumbled on another way as well:
computerID="$(curl -X GET -s -k -u "$jamfUser":"$jamfPass" "$jamfUserURL" | xmllint --xpath '/user/links/computers/computer/id' - | awk -F'>|<' '/id/{print $3}')"
The 'awk' did it.
Posted on 08-03-2021 11:36 AM
You have to do something funky
Due to the version of xmllint included with macOS it doesn't have the argument to split things off to different lines easily. I ran into this recently and came up with this solution. You can just change some pieces to meet your need
curl -s -u "${jamfaccount}:${jamfpass}" -X GET "${jamfurl}JSSResource/advancedcomputersearches/id/${acsID}" -H 'Accept: text/xml' > curloutput
computers="$(xmllint --shell <<< "cat /advanced_computer_search/computers/computer/id/text()" curloutput)"
computerIDs="$(echo $computers | awk -F" ------- " '{$1=""; print $0}')"
for computerID in $computerIDs; do
re='^[0-9]+$'
if ! [[ $computerID =~ $re ]] ; then
continue
fi
echo $computerID
done
Posted on 08-03-2021 11:47 AM
Thanks @boberito! I'll give this a run and see what happens.
I actually stumbled on another way as well:
computerID="$(curl -X GET -s -k -u "$jamfUser":"$jamfPass" "$jamfUserURL" | xmllint --xpath '/user/links/computers/computer/id' - | awk -F'>|<' '/id/{print $3}')"
The 'awk' did it.
Posted on 03-16-2023 05:03 PM
I get
-:1: parser error : Start tag expected, '<' not found
?PNG
^