Posted on 01-10-2019 06:37 AM
I am trying to export groups XML sheets from the JPS via API.
When running the following script, i get an error, what is wrong? The Api Account has full access so its not a permission issue.
#!/bin/bash
curl -ksu APIuser:APIpass -H "accept:xml" https://jamfserver.com:8443/JSSResource/mobiledevicegroups/id/99 | xmllint -format - > ~/Desktop/test.xml
Produces the following Error
-:1: parser error : Start tag expected, '<' not found
{"mobile_device_group":{"id":99,"name":"Test Group","is_smart":false,"criteria
^
Can't for the life of me figure this out
I think i'm missing a flag after the format - (hyphen) then what>
xmllint -format -**HERE** >
Solved! Go to Solution.
Posted on 01-10-2019 07:26 AM
It looks like the result you are getting is JSON, not XML, and xmllint does not know what do do with it.
Try this:
-H "Accept: application/xml"
Instead of this:
-H "accept:xml"
Posted on 01-10-2019 06:51 AM
@Hugonaut Does this work for you?
#!/bin/bash
APIuser=""
APIpass=""
curl -X GET -ksu "$APIuser:$APIpass" "https://jamfserver.com:8443/JSSResource/mobiledevicegroups/id/99" | xmllint --format - > ~/Documents/test.xml
exit 0
Also, I replied to your post about removing a device from all static groups:
https://www.jamf.com/jamf-nation/discussions/30498/how-to-remove-a-mobile-device-from-all-groups-wit...
Posted on 01-10-2019 06:58 AM
to the rescue again, thanks for following up to the other post I missed that, that's the other half of this posts end goal. Thanks for that gonna check it out.
as for this script, it's still exporting a blank sheet when viewing in any program, 0 characters, before, when i remove the hyphen after format i get a list of flags in the XML sheet instead of it actually pulling the data, heres a screenshot of the possible flags, working through them now - https://imgur.com/a/xEh5MEl
Posted on 01-10-2019 07:26 AM
It looks like the result you are getting is JSON, not XML, and xmllint does not know what do do with it.
Try this:
-H "Accept: application/xml"
Instead of this:
-H "accept:xml"
Posted on 01-10-2019 09:11 AM
WOW.
great job man, worked like a charm. thank you for your help!
Posted on 01-21-2019 01:49 PM
Gah, I'm running into a similar issue, but the "Solved" post doesn't quite do it. I have an API call script that gets the assigned user's username (email address) and writes it to a file, as part of a Crashplan configuration process. It's been working great for a couple of months now, but just today it started failing with...
Script result: -:1: parser error : Start tag expected, '<' not found
{"computer":{"general":{"id":132,"name":"(theName of the Mac)","mac_address":"
^
The call in the script is...
id=$(curl -ksu "$username":"$password" -H "Accept: text/xml" "$server"/JSSResource/computers/serialnumber/"$sn" | xmllint --xpath "computer/general/id/text()" -)
email=$(curl -ksu $username:$password -H "content-type: text/xml" $server/JSSResource/computers/id/$id | xmllint --xpath '/computer/location/email_address/text()' - )
... then it (used to) writes the file. Now it errors. Any ideas?
Posted on 01-22-2019 05:54 AM
@AdminIA It looks like the issue is likely the same as above. In the portion of your code that assigns a value to the email variable, you're using the wrong header.
Try replacing:
-H "content-type: text/xml"
With:
-H "Accept: text/xml"
The "Accept" header is for telling the server what format you will accept the response in, typically used for GET operations. The "Content-Type" header is used to tell the server what format the content you're sending it is, typically used for PUT, POST and PATCH operations.