自动化运维-收集设备快照

当设备出现问题 来处理时最后悔的事情是。

  • 之前是怎么样的是不是配置被改了
  • 这个之前是在用吗

网络设备快照

通一个简单程序自动登入交换机把命令输出结果解析一个。TextFSM这个是一个解析神奇


class rgSwInfo:
    """ 锐捷
    接口统一  支持大部分管理型交换机
    获取 华为交换机信息"""
    def __init__(self,cfg):
        """ 初始化 """
    def login(self,user,passwd,ip):
        """登入交换机 返回telnet"""
    def todo(self):
        """ 实际要执行的内容"""
    def cfg2get(self,tn):
        """ 获取配置文件 """
    def list2str(self,tabLs): 
        """ 多行合并成字符串"""
    ##------------arp------------
    def arp2tab(self,tn):
        """ 返回交换 arp表 字符串数组"""
    def arp2rows(self,arpTab,tpl="display-arp.template"):
        """  解析表格字符串  返回json"""
    def arp2json(self,ls):
        """  带表头 col """
    ##------------mac------------
    def mac2tab(self,tn):
        """ 返回交换 arp表"""
    def mac2rows(self,tabStr,tpl="display-mac.template"):
    def mac2json(self,ls):
        """  带表头 col """
       
   

输出每个设备的特定文件

5560_192.168.0.3_arp.json
5560_192.168.0.3_mac.json
lou10_192.168.11.205_mac.json
lou3_192.168.11.203_mac.json
lou7_192.168.11.202_mac.json
OpenWrt_192.168.20.1_arp.json
rg552_192.168.11.200_mac.json
s3700_192.168.0.2_arp.json
s3700_192.168.0.2_mac.json

mac文件内格式

[
    {
        "mac": "00e0-4c37-ace4",
        "port": "Eth0/0/10",
        "vlan": "34"
    },
    .....
]

arp文件格式

[
    {
        "ip": "192.168.11.2",
        "mac": "80fb-06c9-6db9",
        "port": "Vlanif11",
        "t": "I - ",
        "vlan": ""
    },
    ...
]

在表格中查看简单分析