微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python textfsm 解析接口列表

如何解决python textfsm 解析接口列表

在尝试创建 textfsm 模板来解析特定 Cisco IOS-XR 输出时,我不明白这里的问题是什么。

这是我要解析的文本(IOS XR 上“show mrib route”命令的输出)。 我想检索多播组、源和主要接口列表(在“传入”和“传出”部分下)。 “传入”和“传出”部分可能存在也可能不存在(参见下面的示例)。

(*,224.0.0.0/24) Flags: D P
  Up: 3w0d

(*,224.0.1.40) Flags: S P
  Up: 3w0d
  Outgoing Interface List
    GigabitEthernet0/2/0/0 Flags: II LI,Up: 3w0d

(*,239.0.0.0/9) Flags: D P
  Up: 3w0d

(192.168.251.147,239.0.2.1) RPF nbr: 172.18.1.49 Flags: RPF
  Up: 2d03h
  Incoming Interface List
    TenGigE0/2/1/12 Flags: A,Up: 2d03h
  Outgoing Interface List
    TenGigE0/2/1/1 Flags: F NS,Up: 1d02h
    TenGigE0/2/1/4 Flags: F NS,Up: 2d03h

这是我尝试应用的模板,但没有成功。

Value GROUPADDR (\d+\.\d+\.\d+\.\d+[/\d+]*)
Value SRC (\S+)
Value RPFNEIGHBOR (\d+.\d+.\d+.\d+)
Value RT_FLAGS ([^\r\n\t\f\v,]+)
Value RT_UPTIME (\S+)
Value List incomingintfname (\S+)
Value List outgoingintfname (\S+)


Start
  ^\(${SRC},${GROUPADDR}\)\sRPF\snbr:\s${RPFNEIGHBOR}\sFlags:\s${RT_FLAGS}
  ^\(${SRC},${GROUPADDR}\)\sFlags:\s${RT_FLAGS}
  ^\s+Up:\s${RT_UPTIME}
  ^\s+Incoming Interface List -> ingress
  ^\s+Outgoing Interface List -> egress
  ^[\n\r]* -> Record

ingress
  ^\s{4}${incomingintfname}
  ^[\n\r]* -> Start

egress
  ^\s{4}${outgoingintfname}
  ^[\n\r]* -> Start

这是输出

{
        "GROUPADDR": "224.0.0.0/24","RPFNEIGHBOR": "","RT_FLAGS": "D P","RT_UPTIME": "3w0d","SRC": "*","incomingintfname": [],"outgoingintfname": []
    },{
        "GROUPADDR": "239.0.0.0/9","outgoingintfname": [
            "GigabitEthernet0/2/0/0"
        ]
    },{
        "GROUPADDR": "239.0.2.1","RPFNEIGHBOR": "172.18.1.49","RT_FLAGS": "RPF","RT_UPTIME": "2d03h","SRC": "192.168.251.147","incomingintfname": [
            "TenGigE0/2/1/12"
        ],"outgoingintfname": []
    }

我想弄清楚为什么我不能在模板中同时包含“传入”和“传出”。如果我删除其中一个,另一个将正确填充。 此外,当我只有“传出”部分时,似乎 intf 名称映射到另一个组,因此另一个记录(参见上面的示例:Gig0/2/0/0 属于 224.0.1.40 并关联到 239/9结果)。

有人对此有想法吗? 谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?