#ansible #stdout
Вопрос:
Есть ли способ удалить код linux «[32 м АКТИВНЫЙ» [0 м «» из выходных строк и оставаться АКТИВНЫМ или ОТКЛЮЧЕННЫМ?
ok: [server-c] => {
"msg": [
"Certificates 1" u001b[32mACTIVEu001b[0m",
"Certificates 2" u001b[32mACTIVEu001b[0m",
"Certificates 3" u001b[32mACTIVEu001b[0m",
"Certificates 4" u001b[93mDISABLEDu001b[0m",
"Certificates 5" u001b[93mDISABLEDu001b[0m",
]
}
Я попытался с помощью своего ансибельного кода, но ничего не убрал :
---
- hosts: server
become: yes
become_user: user
tasks:
- name: Show certificates
shell: '/bin/bash -i -c "kb | grep -i certificates"'
register: results
- debug: msg="{{ results.stdout_lines | replace('\u001b[32m', '') | replace('\u001b[93m', '') | replace('\u001b[0m', '') }}"
Комментарии:
1. Попробуй
replace('\u001b.*0m', '')
Ответ №1:
Например
- debug:
msg: "{{ item|regex_replace('\u001b.*0m', '')|trim }}"
loop: "{{ results.stdout_lines }}"
дает
msg: Certificates 1"
msg: Certificates 2"
msg: Certificates 3"
msg: Certificates 4"
msg: Certificates 5"
Если вы хотите удалить часть строки после цитаты
- debug:
msg: "{{ item|regex_replace(_regex, '') }}"
loop: "{{ results.stdout_lines }}"
vars:
_regex: '".*0m'
дает
msg: Certificates 1
msg: Certificates 2
msg: Certificates 3
msg: Certificates 4
msg: Certificates 5