如何在Ansible中从API输出提取交换机名称与端口并注册为变量
提取交换机名称与端口的实现方案
下面是基于Python的正则提取方案,可直接将目标内容存入独立变量供后续任务调用:
核心正则规则
- 交换机名称匹配规则:
[A-Za-z]-\d{1,3}-D[A-Za-z],精准匹配「单字母-1-3位数字-D+单字母」格式 - 交换机端口匹配规则:
Gi\d+/\d+/\d+,匹配以Gi开头的标准交换机端口格式
代码示例
import re # 假设spm_results是从Web API获取的逗号分隔字符串 spm_results = "设备基础详情,M-1-DA,运行状态正常,Gi3/0/4,端口带宽1G" # 提取交换机名称并赋值变量 switch_name = re.search(r'[A-Za-z]-\d{1,3}-D[A-Za-z]', spm_results).group() if re.search(r'[A-Za-z]-\d{1,3}-D[A-Za-z]', spm_results) else None # 提取交换机端口并赋值变量 switch_port = re.search(r'Gi\d+/\d+/\d+', spm_results).group() if re.search(r'Gi\d+/\d+/\d+', spm_results) else None # 后续任务可直接调用这两个变量 print(switch_name) # 输出: M-1-DA print(switch_port) # 输出: Gi3/0/4
补充说明
- 如果字符串中存在多个符合规则的匹配项,可改用
re.findall()获取所有结果后按需筛选 - 代码加入空值判断,避免因无匹配项导致运行报错
内容的提问来源于stack exchange,提问作者haringms
相关产品推荐
相关产品推荐

