Как включить несколько служб одновременно с помощью модуля firewalld - Ansible

Использование awk:

$ awk -F'[".]' 'NR==FNR{a[$0]; next} $2 in a{$0="//"$0} 1' list1 list2
//'include "test1.sv"
'include "test2.sv"
//'include "test3.sv"
'include "test4.sv"

Как это работает:

  • -F'[".]'

    Это указывает awk разделять поля всякий раз, когда встречается "или ..

  • NR==FNR{a[$0]; next}

    При чтении первого файла, list, это говорит awk создать ключ в ассоциативном массиве a, равный текущей строке, а затем пропустить остальные команды и перейти к строке next.

    Подробнее:NR— это общее количество строк, которые awk уже прочитал. FNR— количество строк, прочитанных до сих пор из текущего файла. Это, когда FNR==NR, мы читаем первый файл.

  • $2 in a{$0="//"$0}

    При чтении второго файла это указывает awk добавить //в начало строки, если второе поле в текущей строке является ключом в ассоциативном массиве a.

  • 1

    Это загадочное сокращение awk для печати -строки -.

Расширенный пример

Использование дополнительной строки, упомянутой в комментариях:

$ cat list1
test1
test3
usb30_suspend_resume
$ cat list2
'include "test1.sv"
'include "test2.sv"
'include "test3.sv"
'include "usb30_suspend_resume.sv"
'include "test4.sv"
$ awk -F'[".]' 'NR==FNR{a[$0]; next} $2 in a{$0="//"$0} 1' list1 list2
//'include "test1.sv"
'include "test2.sv"
//'include "test3.sv"
//'include "usb30_suspend_resume.sv"
'include "test4.sv"

Адаптация для файлов pastebin

Файлы в pastebin имеют конечные пробелы в list1, и оба файла имеют окончание строки -в стиле окон -. Для обработки этого формата используйте:

awk 'NR==FNR{a[$1]; next} $2 in a{$0="//"$0} 1' FS='[[:space:]]' list1.txt FS='[".]' list2.txt
3
15.01.2020, 22:00
1 ответ

firewalld параметр serviceпредставляет собой строку. Используйте цикл для повторения списка сервисов. Например

- name: firewalld configuration
  firewalld:
    zone: public
    service: "{{ item }}"
    permanent: yes
    state: enable
  notify: reload firewalld
  loop:
    - https
    - http
8
27.01.2020, 21:24

Теги

Похожие вопросы