Skip to main content
Question

xmllint parser error

  • April 16, 2021
  • 3 replies
  • 30 views

thlemaire
Forum|alt.badge.img+3

Hello all,

i am seeking out any advice for a script that i have that through an api call reads a value inside an extension attribute populated in a computers inventory then returns this value in a variable.

i am using curl for the API call that is working fine but every time i add a pipe for xmllint i get parser errors that i am unable to eliminate.

This is the command that i send.

/usr/bin/curl -sk -H "Authorization: Basic echo -n $SUPERUSER:$SUPERPASSWORD | base64" -H "Accept: text/xml" https://$JssUrl/JSSResource/computers/udid/$Udid/subset/extension_attributes -X GET | xmllint -xpath "//extension_attributes/extension_attribute[contains(name, 'LAPS')]/value/text()" -

i think the issue relies on how the xmllint -path line is formated.

has anyone encountered this type of issue ?

Thanks in advance for any help provided

3 replies

dan-snelson
Forum|alt.badge.img+30
  • Honored Contributor
  • April 16, 2021

@thlemaire After searching some working scripts for xmllint, the following variables are working for me, using a shebang of: #!/bin/bash

policyNames=$( curl -H "Accept: text/xml" -sfku "${apiUser}:${apiPassword}" "${apiURL}/JSSResource/policies" | xmllint --format - | awk -F'>|<' '/<name>/{print $3}')

policyName=$( xmllint --xpath "/policy/general/name/text()" ${updatesDirectory}/policy-${policyID}.xml )

thlemaire
Forum|alt.badge.img+3
  • Author
  • New Contributor
  • April 16, 2021

@dan-snelson Many thanks for your help.

i managed to succeded with this command

/usr/bin/curl -ksu "$SUPERUSER:$SUPERPASSWORD" -H "Accept: text/xml" $JSSUrl/JSSResource/computers/udid/$udid | xmllint --xpath "//extension_attributes/extension_attribute[contains(name, 'LAPS')]/value/text()" -

i still have to review the end of the script as i am detecting that i will have other problems there. for some reason the api call for computers/udid was updated. maybe before it was possible to aim directly subset/extention_attributes but after checking the classic api call in jamf 10.26 this seems to be not an option anymore. and the new API interface based on a token based authentication seems not to provide this option to GET or PUT based on computer udid.


dan-snelson
Forum|alt.badge.img+30
  • Honored Contributor
  • April 16, 2021

Glad you got it working, @thlemaire.

On the off chance a snippet or two from the following proves helpful with modifying EAs via the API:
Your Internal Beta Test Program: Opt-in / Opt-out via Self Service