You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible将EXOS配置解析出的端口范围转换为线性列表

Ansible 端口范围转线性格式实现方案

你可以通过拆分端口字符串、分段处理范围、合并排序的逻辑完成转换,假设你通过cli_parse解析到的EXOS配置存储在变量parsed_exos_config中,参考任务如下:

---
- name: 初始化空的端口列表
  set_fact:
    expanded_tagged_ports: []

- name: 处理带范围的端口段
  set_fact:
    expanded_tagged_ports: "{{ expanded_tagged_ports + range(item.split('-')[0] | int, item.split('-')[1] | int + 1) | list }}"
  loop: "{{ parsed_exos_config['MGMT-vlan'].ports.tagged.split(',') }}"
  when: "'-' in item"

- name: 处理单个端口
  set_fact:
    expanded_tagged_ports: "{{ expanded_tagged_ports + [item | int] }}"
  loop: "{{ parsed_exos_config['MGMT-vlan'].ports.tagged.split(',') }}"
  when: "'-' not in item"

- name: 排序后覆盖原配置的tagged字段
  set_fact:
    parsed_exos_config: "{{ parsed_exos_config | combine({'MGMT-vlan': {'ports': {'tagged': expanded_tagged_ports | sort | join(',')}}}, recursive=True) }}"

处理完成后parsed_exos_config['MGMT-vlan'].ports.tagged就是你需要的线性端口字符串格式。

注意事项

  • 上述逻辑仅适配纯数字端口编号场景,如果你设备端口为带槽位号的格式(如1/1/2-1/1/5),需要额外修改范围生成规则
  • 如果需要批量处理所有vlan的端口字段,在外层加一层遍历所有vlan的循环即可复用上述逻辑

内容的提问来源于stack exchange,提问作者Sergey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:24:00