gpt4 book ai didi

Ansible-playbook - 如何在字符串中添加大写

转载 作者:行者123 更新时间:2023-12-04 15:07:13 26 4
gpt4 key购买 nike

我是 ansible 的新手。我想用 ansible 简化我的网络任务。我想做的一件事是登录到所有网络 (Cisco) 交换机并显示带有包含某个字符串的描述的接口(interface)。我打算使用 cisco.ios.ios_command模块向交换机发送命令。开关应该返回带有 search_str 的行包括

show interface description | include {{search_str}}
描述可能包含大写或小写字母。例如,可以在交换机上配置“abc123”或“Abc123”或“ABC123”。 Cisco 确实允许您使用正则表达式来查找所有案例。命令变成这样,它将匹配所有情况。
show interface description | include [aA][bB][cC]123
所以现在我的挑战是如何将“abc123”转换为“[aA][bB][cC]123”。 “abc123”是我在运行剧本时设置的变量 -e "search_str=abc123"选项。
我首先尝试使字符串成为一个列表,每个字符作为一个项目: {{ my_var | lower | list }} .它还使我的搜索字符串全部为小写字母。 "Abc123"变成 "['a','b','c',1,2,3]"
然后我尝试使用 loop遍历每个字符并添加字符的大写。我真的写不出来..我最好的尝试是这样的:
- name: add upper case characters
loop: "{{search_str}}"
ansible.builtin.set_fact:
search_str_converted: "{{ item + (item|upper) }}"
在上面的代码中,我还会在变量中添加“[]”作为字符串。如果这一步有效,那么我计划做一个 join再次将其变回字符串。
让我知道逻辑是否正确,请帮我添加大写字符
谢谢!
迪凡

最佳答案

下面的任务完成这项工作

    - set_fact:
search_list: "{{ search_list|default([]) + [element] }}"
loop: "{{ search_str|list }}"
vars:
is_number: "{{ item is match('\\d') }}"
double: "[{{ item|lower }}{{ item|upper }}]"
element: "{{ is_number|ternary(item, double) }}"
- set_fact:
search_regex: "{{ search_list|join }}"

关于Ansible-playbook - 如何在字符串中添加大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65893820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com