Я не могу понять это.
Как бы удалить все специальные символы и пробелы, оставив только текст в переменной item.0
ниже?
Например, команды show конвертируются следующим образом.
show running-config
>> show_running_config
show ip interface brief | include up
>> show_ip_interface_brief_include_up
Вывод сохраняется в файл, имя которого совпадает с именем команды. Поэтому специальные символы, такие как |/\
и т. Д., Вызывают проблемы.
Я пытался использовать это, но у меня только ошибки.
dest: "/media/sf_ubuntu_vm_share/ansible_out/{{ inventory_hostname }}/{{ item.0 | regex_replace('@?\+(.*)', '_') }}.bck"
Вот код ANSI, который генерирует ошибку при попытке записи. файл с |
в имени файла.
---
- name: Create show command list
set_fact:
command_list:
- show running-config
- show ip interface brief | include up
- name: Execute commands on device
ios_command:
commands: "{{ command_list }}"
register: output
when: ansible_network_os == 'ios'
- name: Copy show command output to file
copy:
content: '{{ item.1 }}'
force: yes
dest: "/media/share/ansible_out/{{ inventory_hostname }}/{{ item.0 }}.bck"
loop: "{{ command_list|zip(output.stdout)|list }}"
when: ansible_network_os == 'ios'