У меня есть книга игр, которая запрашивает у сервера его SystemID, который можно преобразовать в номер модели, используя предоставленную поставщиком таблицу, которая отображает идентификатор для модели. Сервер возвращает десятичное значение, но в таблице используется шестнадцатеричный эквивалент.
Что я хочу сделать, так это преобразовать десятичную строку в шестнадцатеричную строку, которую можно сопоставить с записью в предоставленной поставщиком таблице.
Пример:
Server returns: SystemID = 1792
Matching entry in vendor table: 0x0700
Я искал в документации Ansible и в Интернете искал либо собственную команду Ansible, либо выражение jinja2 для выполнения преобразования.
Я нашел только функцию int (value, base = x) jinja2, которая противоположна тому, что я пытаюсь сделать.
Собственная команда python hex () может это сделать. Но мне нравится избегать этого, если это возможно.
Вот задача playbook, которая анализирует стандартный вывод сервера для получения значения systemid:
set_fact:
server_model: "{{ ( server_model_results.stdout_lines | select('match','SystemID' ) | list| first ).split('=')[1] | regex_replace('^\ |\ /$', '' ) }}"
Среда: Ansible 2.9.7 Python 3.8.0 macOS 10.15.4