由于Yamaha的NW设备L2MS在“感觉很好”但在监视方面没有结构化,所以我们正在用Ansible来“规范化它”

這篇文章是關於的。

由于SNMP在LAN外不可用,我打算使用L2MS来监视Yamaha网络设备。这篇文章是给那些不需要提取表格形式(例如show arp)的人准备的。

我想做的事情

因为想要将通行数据定期输入数据库,所以需要结构化(解析)的信息。

前提 tí)

已准备好网络设备的ssh、L2MS配置、Ansible、ansible-collection-rtx、ansible-collection-swx以及Python的安装。

做法

使用正则表达式替换结果中的分号和逗号,并保存为ini格式。

剧本.yml

---
- hosts: RTX830
  connection: network_cli

  tasks:
    - name: get lan map
      yamaha_network.rtx.rtx_command:
        commands:
        - show lan-map lan1
      register: result

    - name: show result
      debug:
        msg: "{{ result.stdout_lines[0] }}"

    - local_action:
        module: copy
        content: "{{ result.stdout[0] | regex_replace('\\n\\s+','\\n') | regex_replace(': ','= ') }}"
        dest: lan_map.ini

  vars:
    ansible_network_os: yamaha_network.rtx.rtx
    ansible_user: user_name
    ansible_ssh_pass: password
    ansible_become: true
    ansible_become_password: password
    ansible_port: 22
ansible-playbook -i inventory/host playbook.yml

cat lan_map.ini
[Master]
LinkUp          = lan1:2 
Terminal num    = 2

[Slave]
[ac:44:f2:be:a0:58]
Model name      = WLX212
System name     = WLX212_Z6C02576BO
Route           = lan1:2
LinkUp          = 1 
     UpLink     = 1
     DownLink   = none
State           = Idle
Appear          = 2022/02/20 20:20:05
Search Time     = 0 sec (2 msec)
Terminal num    = 2

解析ini文件

import configparser
config = configparser.ConfigParser(allow_no_value=True)
config.read('lan_map.ini')
# ['lan_map.ini']

config.sections()
# ['Master', 'Slave', 'ac:44:f2:be:a0:58']

for key in config['Master']:  
     print(key)

# linkup
# terminal num

config['Master']['linkup']
# 'lan1:2'

非常感谢您阅读到最后。
如果有内容您喜欢的话,希望能给予「赞」或「分享」,非常开心。
这将成为我们未来活动的巨大动力!

有启发性的文章

bannerAds