Digest.rdf의 해시 값을 ansible get_url에 제공하는 방법은 무엇입니까?

Digest.rdf의 해시 값을 ansible get_url에 제공하는 방법은 무엇입니까?

예를 들어여기요약 목록이 있습니다. get_url에서 체크섬 값을 생성하는 쉬운 방법이 있는지 궁금합니다.

rdf를 사전으로 구문 분석하는 쉬운 방법이 있습니까? 아니면 xml과 같은 rdf 경로를 쿼리할 수 있을까요?

고쳐 쓰다

방금 rdf가 일부 네임스페이스를 가진 xml이라는 것을 깨달았습니다. 다음과 같이 Python의 lxml과 같은 프로그래밍 언어를 사용하여 쿼리할 수 있습니다.

from lxml import etree
root = etree.parse("/tmp/digest.rdf")
ns = root.getroot().nsmap
root.xpath('/rdf:RDF/digest:Content[@rdf:about="magick"]/digest:sha256/text()', namespaces=ns)[0]

하지만 ansible에서는 작동하지 않습니다.

  1. 네임스페이스 매개변수를 명시적으로 설정해야 합니다.
  2. /text()텍스트만 반환할 수는 없습니다 . 이것이 없으면 반환된 일치 값은 사전 목록입니다.
ansible localhost -m xml -a 'path=/tmp/digest.rdf xpath=/rdf:RDF/digest:Content[@rdf:about="magick"]/digest:sha256/text() print_match=yes' -i inventory
PLAY [Ansible Ad-Hoc] *************************************************************************************************************************************************************************************

TASK [xml] ************************************************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: lxml.etree.XPathEvalError: Undefined namespace prefix
fatal: [localhost]: FAILED! => changed=false 
  module_stderr: |-
    Traceback (most recent call last):
      File "<stdin>", line 107, in <module>
      File "<stdin>", line 99, in _ansiballz_main
      File "<stdin>", line 47, in invoke_module
      File "/usr/lib/python3.10/runpy.py", line 224, in run_module
        return _run_module_code(code, init_globals, run_name, mod_spec)
      File "/usr/lib/python3.10/runpy.py", line 96, in _run_module_code
        _run_code(code, mod_globals, init_globals,
      File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
        exec(code, run_globals)
      File "/tmp/ansible_xml_payload_zgisyqdh/ansible_xml_payload.zip/ansible_collections/community/general/plugins/modules/xml.py", line 989, in <module>
      File "/tmp/ansible_xml_payload_zgisyqdh/ansible_xml_payload.zip/ansible_collections/community/general/plugins/modules/xml.py", line 943, in main
      File "/tmp/ansible_xml_payload_zgisyqdh/ansible_xml_payload.zip/ansible_collections/community/general/plugins/modules/xml.py", line 399, in do_print_match
      File "src/lxml/etree.pyx", line 2311, in lxml.etree._ElementTree.xpath
      File "src/lxml/xpath.pxi", line 357, in lxml.etree.XPathDocumentEvaluator.__call__
      File "src/lxml/xpath.pxi", line 225, in lxml.etree._XPathEvaluatorBase._handle_result
    lxml.etree.XPathEvalError: Undefined namespace prefix
  module_stdout: ''
  msg: |-
    MODULE FAILURE
    See stdout/stderr for the exact error
  rc: 1

lxml과 같은 nsmap을 자동으로 가져오는 방법이 있습니까?

관련 정보