0

我已经开始通过 google 探索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

somereason 不会解析为键和值。

4

1 回答 1

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上找到一个类似的示例以及进一步的解释。

于 2018-06-25T06:32:32.983 回答