# find the prefix of your repository
ls /var/lib/apt/lists
# list all the packages (replace "foo" with your prefix)
grep '^Package:' /var/lib/apt/lists/foo*_Packages
# hide the filenames so you can sort by package name
grep -h '^Package:' /var/lib/apt/lists/foo*_Packages | sort
Из вашей отладки result
— это зарегистрированная переменная из задачи оболочки, в которой запускается clamav
в цикле по списку путей.
Как описано в документации цикла ansible , зарегистрированная переменная модифицируется, чтобы содержать список results
, где каждый элемент является отдельным результатом запуска модуля с текущим итерируемым элементом (, например. /usr/bin
в вашем примере ).
В этом случае result.stdout
не существует (, о чем ясно сообщает ваше сообщение об ошибке ), но в качестве конкретного примера result.results.0.stdout
существует в вашем примере.
Хотя это сработает, если у вас всегда один путь в цикле, вы, вероятно, захотите получить список всех stdout из каждого результата. В этом случае вы можете использовать:
result.results | map(attribute='stdout')
Если мы поместим это обратно в ваш конкретный шаблон, способный выдавать результат для любого заданного host
, это даст:
The {{ host }} says {{ hostvars[host].result.results | map(attribute='stdout') | to_nice_json }}
Обратите внимание, что переход к json здесь может быть не лучшим вариантом для электронной почты, и что приведенное выше приводит к потере информации об исходном пути, который был отсканирован. Альтернативный вариант может состоять в том, чтобы просто просмотреть результаты и распечатать только необходимую информацию :
.This is report for host {{ host }}
----------------------------------
{% for scan_result in hostvars[host].result.results %}
Scan performed in directory {{ scan_result.item }}:
{{ scan_result.stdout }}
{% endfor %}