Ребята, приветствую! Что-то я запутался с регулярками, кавычками и экранированием.

Помогите разобраться пожалуйста.
Нужно в файле поменять строку (много разных строк, потому и цикл использую)
list listen_http '[::]:80'
на
list listen_http '[::]:8080'

- name: Change gui ports
loop:
- {regexp: 'list listen_http \Q''[::]:80''\E', line: " list listen_http '[::]:8080'"}
lineinfile:
dest: /etc/config/uhttpd
regexp: '{{ item.regexp }}'
line: '{{ item.line }}'

Получаю такую ошибку:
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: re.error: bad escape \Q at position 17
failed: [openwrt.lan] (item={'regexp': "list listen_http \\Q'[::]:80'\\E", 'line': "\tlist listen_http '[::]:8080'"}) => changed=false
ansible_loop_var: item
item:
line: "\tlist listen_http '[::]:8080'"
regexp: list listen_http \Q'[::]:80'\E
module_stderr: |-
***Далее длинный трэйс"
re.error: bad escape \Q at position 17
module_stdout: ''
msg: |-
MODULE FAILURE
See stdout/stderr for the exact error
rc: 1

Как побороть?

1 ответов

8 просмотров
Petr-Devyaterikov Автор вопроса

В итоге получилось вот так: - name: Change openwrt web gui ports vars: http_port: 8080 https_port: 443443 loop: - {regexp: "list listen_http '0.0.0.0:", line: "\tlist listen_http '0.0.0.0:{{ http_port }}'"} - {regexp: "list listen_http '\\[::\\]:", line: "\tlist listen_http '[::]:{{ http_port }}'"} - {regexp: "list listen_https '0.0.0.0:", line: "\tlist listen_https '0.0.0.0:{{ https_port }}'"} - {regexp: "list listen_https '\\[::\\]:", line: "\tlist listen_https '[::]:{{ https_port }}'"} lineinfile: dest: /etc/config/uhttpd regexp: '{{ item.regexp }}' line: '{{ item.line }}' Не очень красиво, но зато работает.

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

Обсуждают сегодня

'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
Ребят, а вот такой вопрос: если я владелец бота анонимного чата, в котором, например, имеются подписки, используя какую-нибудь ЮКассу (или тому подобное, в общем с налогами, в...
Eugene Неелов
8
Откуда ты lw взял вообще?
Sergey
6
Есть полностью собранная база "шрифтов" - подобных символов?
Shen
9
Короче получается только кнопки не поменять А кнопки вроде тоже слетают при редактировании не?
inc.
10
Дорогие друзья, есть тут те, Кто рад поучаствовать в работе и в команде над игровой платформой? Мы делаем игровую и уникальную платформу. Стек платформы Go и React. Нам ...
Александр Цивин :)
2
js не пойдет, код ставиться в twig html <source media="(min-width: 1200px)" srcset="{{ img|resize(x_1200, rate_h?x_1200*rate_h:false, {'mode':mode_resize_im...
Point 111
1
Век живи, век учись и продолжай удивляться Carbon Оказывается, в Carbon дату можно задавать даже текстом 😲 <?php use Carbon\Carbon; $october_date = new Carbon("last sunday o...
Igor
3
Кто сколько за бота берёт? (Я покупать не хочу)
Ivan Aleksandrovich
10
Карта сайта