необходимо перечислить элемент из вывода фактов

Описанный признак вызван escape-последовательностью rc (курсор восстановления). Если подумать, то вероятным источником проблемы является vim:

  • с заданным .screenrc программа screen имитирует функцию альтернативного экрана xterm.
  • , что выполняется с использованием управляющих последовательностей terminfo smcup и rmcup (termcap ti и te )
  • при переключении - альтернативный экран, xterm (a) сохраняет позицию курсора, (b) очищает альтернативный экран и (c) отображает альтернативный экран.
  • при переключении с на альтернативный экран xterm (a) восстанавливает положение курсора для нормального экрана и (b) отображает нормальный экран.
  • эти операции выполняются в виде отдельных управляющих последовательностей, а не разделены. В описании терминала вы можете (вывод infocmp) увидеть 1049 .
  • экран программа имитирует эти операции.
  • однако в отличие от xterm не использует единственную переменную для сохраненной / восстановленной позиции курсора: быстрая проверка показывает, что если
    • я сохраняю положение курсора (с tput sc ),
    • переключение на / из альтернативного экрана ( tput smcup
    • , за которым следует tput rmcup ), и, наконец,
    • восстанавливает позицию курсора ( tput rc ),
    • , затем курсор переходит в позицию, сохраненную tput sc .

vim - и плагины vim - могут отправлять escape-последовательности.Кажется, что что-то во время выхода из vim отправляет escape-последовательность для восстановления курсора. Для быстрой проверки здесь vim вёл себя правильно (но конфигурации и версии различаются). Так что я бы проверил плагины.

Если бы я занимался отладкой этого случая, я бы захватил символы, отправленные на экран (например, используя скрипт ), и поискал бы наиболее часто используемые последовательности для rc :

  • escape 7
  • escape [ u

Было бы неплохо, если бы screen более точно соответствовал поведению xterm, но в конечном итоге кажется, что есть проблема с vim отправкой неожиданных последовательностей курсора сохранения / восстановления.

Связанное чтение:

0
06.09.2018, 22:59
2 ответа

Вместо

shell: echo {{ item }} >> /tmp/ips
with_items: "{{  ip  }}"

Используйте шаблон .

template:
  src: ips.j2
  dest: /tmp/ips

с шаблоном ips.j2

{% for item in ip %}
{{ item }}
{% endfor %}
0
28.01.2020, 04:13

ansible_all_ipv4_addressesуже является массивом, поэтому вам не нужно splitего:

- copy:
    dest: /tmp/ips
    content: "{{ ansible_all_ipv4_addresses | join('\n') }}"

Это даст желаемый результат.

0
28.01.2020, 04:13

Теги

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