코드 설명자: Ansible 코드의 Regex 및 Backrefs
2731 단어 lineinfileansibleregex
문제의 Ansible 기반 코드는 실제로는 하나의 플레이에 불과했습니다.
---
- name: Remove sha512 from the LOG option-list
ansible.builtin.lineinfile:
backrefs: true
line: '\g<log>\g<equals>\g<starttoks>\g<endtoks>'
path: /etc/aide.conf
regexp: '^#?(?P<log>LOG)(?P<equals>(\s?)(=)(\s?))(?P<starttoks>.*\w)(?P<rmtok>\+?sha512)(?P<endtoks>\+?.*)'
state:present
...
위의 내용은 RHEL 7 구성 파일 "/etc/aide.conf"의 내용이 정의된 스캔 정의 "LOG"에 대한 적절한 옵션을 설정하도록 하기 위한 것입니다. 라인의 원래 내용은 다음과 같습니다.
LOG = p+u+g+n+acl+selinux+ftype+sha512+xattrsfor
해당 행의 내용이 실제로 다음과 같아야 함을 나타내도록 STIG가 업데이트되었습니다.
LOG = p+u+g+n+acl+selinux+ftype+xattrsfor
Ansible 플레이의 regexp 및 backrefs 속성 값은 Ansible lineinfile module's 기능을 통해 제공되는 고급 줄 편집을 사용하도록 설계되었습니다. Ansible은 Python 기반 서비스입니다. 이 모듈의 고급 줄 편집 기능은 Pythonre() function을 사용하여 구현됩니다. regexp 속성의 값은 참조 가능한 검색 그룹화를 수행하는 re() 함수의 기능을 사용하도록 작성됩니다. 검색 그룹화는 괄호로 구분된 검색 규칙(예: "(SEARCH_SYNTAX)")을 사용하여 지정됩니다.
기본적으로 지정된 검색 그룹은 왼쪽에서 오른쪽 색인 번호로 참조됩니다. 이 번호는 "1"부터 시작합니다. 그런 다음 대체 문자열의 값을 구성하는 데 도움이 되도록 대체 문자열에서 참조 ID를 참조할 수 있습니다. "backrefs"라고도 합니다. 색인 번호 방법을 사용하면 대체 문자열은 "\1\2\6\8"이 됩니다.
가독성을 높이기 위해 각 그룹의 이름을 명시적으로 지정할 수 있습니다. 검색 그룹에 이름을 지정하려면 검색 그룹 시작 부분에 ?P
웹 사이트를 방문하여 왼쪽 메뉴에서 "Python"정규식 유형을 선택하면 위의 정규식이 해석되는 방식을 시각적으로 확인할 수 있습니다. "TEST STRING"섹션에 평가할 문자열을 입력한 다음 REGULAR EXPRESSION 상자에 regexp 매개 변수 값을 입력합니다. 그런 다음 사이트는 정규식이 테스트 문자열을 어떻게 자르는지 보여주고 왜 그런 식으로 잘랐는지 알려줍니다.
Reference
이 문제에 관하여(코드 설명자: Ansible 코드의 Regex 및 Backrefs), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ferricoxide/code-explainer-regex-and-backrefs-in-ansible-code-gn7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)