Cisco-ios-configをtextfsmでパースする
Cisco-iosの[show ip eigrp topology all-lins]の結果を、textfsm+ntc-templatesでパースする。
- textfsmでパースエラーが出たので、デバック出力を追加したモジュールを作成
- デフォルトのテンプレート[cisco_ios_show_ip_eigrp_topology.template]が未対応だったので、修正
textfsm
エラートレースを参考に、呼出前にテンプレート、入力ファイルの内容をSTDERR出力する。
for line in lines:
print >> sys.stderr, "DBG1:" , line
self._CheckLine(line)
for rule in self._cur_state:
matched = self._CheckRule(rule, line)
print >> sys.stderr, "DBG2:" , line , "->" , rule
if matched:
for value in matched.groupdict():
self._AssignVar(matched, value)
print >> sys.stderr, "DBG3:" , rule
if self._Operations(rule):
diff結果
$ diff textfsm.py.org textfsm.py
1c1
< #!/usr/bin/python2.4
---
>
853a854
> print >> sys.stderr, "DBG1:" , line
872a874
> print >> sys.stderr, "DBG2:" , line , "->" , rule
876a879
> print >> sys.stderr, "DBG3:" , rule
ntc-templates
- ADV_ROUTEが
Conected, Rstatic(nn/mm)
に対応していなかたので、修正
-
P ip/maskl, xxx successors, FD is yyy, serno nn
にも対応
# Value List ADV_ROUTER (\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))
Value List ADV_ROUTER ((\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))|\w+|(\w+\s+\(\d+\/\d+\)))
Start
# Matches a route and captures if ${TAG} is use for the route and then moves to Gateway section
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+tag\s+is\s+${TAG} -> Gateway
## -- hiroshi : tag -> serno
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG} -> Gateway
Gateway
## -- hiroshi
# These are the same as above and capture the next set of routes
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+tag\s+is\s+${TAG}
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG}
$ diff cisco_ios_show_ip_eigrp_topology.template.org cisco_ios_show_ip_eigrp_topology.template
9c9,13
< Value List ADV_ROUTER (\d+\.\d+\.\d+\.\d+|\w+)
---
> # 0.0.0.0 (fdval/adval)
> # Connected
> # Rstatic (fdval/adval)
> # Value List ADV_ROUTER (\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))
> Value List ADV_ROUTER ((\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))|\w+|(\w+\s+\(\d+\/\d+\)))
20a25,26
> ## -- hiroshi : tag -> serno
> ^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG} -> Gateway
29a36
> ## -- hiroshi
30a38
> ^\s+via\s+${ADV_ROUTER}${OUT_INTERFACE}?
34a43,44
> ## -- hiroshi
> ^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG}
Conected, Rstatic(nn/mm)
に対応していなかたので、修正P ip/maskl, xxx successors, FD is yyy, serno nn
にも対応# Value List ADV_ROUTER (\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))
Value List ADV_ROUTER ((\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))|\w+|(\w+\s+\(\d+\/\d+\)))
Start
# Matches a route and captures if ${TAG} is use for the route and then moves to Gateway section
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+tag\s+is\s+${TAG} -> Gateway
## -- hiroshi : tag -> serno
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG} -> Gateway
Gateway
## -- hiroshi
# These are the same as above and capture the next set of routes
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+tag\s+is\s+${TAG}
^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG}
$ diff cisco_ios_show_ip_eigrp_topology.template.org cisco_ios_show_ip_eigrp_topology.template
9c9,13
< Value List ADV_ROUTER (\d+\.\d+\.\d+\.\d+|\w+)
---
> # 0.0.0.0 (fdval/adval)
> # Connected
> # Rstatic (fdval/adval)
> # Value List ADV_ROUTER (\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))
> Value List ADV_ROUTER ((\d+\.\d+\.\d+\.\d+\s+\(\d+\/\d+\))|\w+|(\w+\s+\(\d+\/\d+\)))
20a25,26
> ## -- hiroshi : tag -> serno
> ^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG} -> Gateway
29a36
> ## -- hiroshi
30a38
> ^\s+via\s+${ADV_ROUTER}${OUT_INTERFACE}?
34a43,44
> ## -- hiroshi
> ^${CODE}\s+${ROUTE}/${MASK},\s+${SUCCESSORS}\s+successors,\s+FD\s+is\s+${FD},\s+serno\s+${TAG}
Author And Source
この問題について(Cisco-ios-configをtextfsmでパースする), 我々は、より多くの情報をここで見つけました https://qiita.com/harasakih/items/260c13b99e005fe6a8b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .