TextFSM nxos模板

时间:2018-05-18 22:59:33

标签: parsing python-textfsm

我已经开始通过谷歌浏览TextFSM,它非常适合屏幕抓取。但是我被卡住了。 以下是该命令的模板:" show ip community-list"

Value TYPE (Standard|Extended)
Value CLNAME (\D+)
Value SEQ (\d+)
Value ACTION (permit|deny)
Value ASNUM (\d+)
Value TAGNUM (\d+)

Start
  ^${TYPE}\s+Community\s+List\s+${CLNAME}\s+ -> Community

Community
  ^\s+${SEQ}\s+${ACTION}\s+${ASNUM}\s+:\s+${TAGNUM}\s+ -> Record Start

原始输出如下:

Expanded Community List ROUTES_CL1
1 permit "11111:10000"
Standard Community List ROUTES_CL2
    1 permit 11111:10000
    2 permit 22222:10000
    3 permit 33333:10000
某些原因并未解析关键和价值观。

1 个答案:

答案 0 :(得分:0)

有几件事需要解决:

  • 扩展(在模板中)与扩展(在输出中)
  • CLNAME中的数字与\ D +
  • 不匹配
  • \ s +:\ s +要求冒号周围的空格是输出所没有的
  • 必须记住社区列表名称,因为它可能适用于多个操作行。使用“填充”。

使用此模板:

Value Filldown TYPE (Standard|Extended|Expanded)
Value Filldown CLNAME (\w+)
Value SEQ (\d+)
Value ACTION (permit|deny)
Value ASNUM (\d+)
Value TAGNUM (\d+)

Start 
  ^${TYPE}\s+Community\s+List\s+${CLNAME} 
  ^\s*${SEQ}\s+${ACTION}\s+"?${ASNUM}:${TAGNUM}"? -> Next.Record

EOF

将给出以下内容的解析输出:

[['Expanded', 'ROUTES_CL1', '1', 'permit', '11111', '10000'],
 ['Standard', 'ROUTES_CL2', '1', 'permit', '11111', '10000'],
 ['Standard', 'ROUTES_CL2', '2', 'permit', '22222', '10000'],
 ['Standard', 'ROUTES_CL2', '3', 'permit', '33333', '10000']]

textfsm wiki上可以找到类似的示例,其中有进一步的说明。