0

我有以下用于“显示接口描述”的 textfsm 模板,该模板仅适用于 Cisco 交换机。

现在我有一个 Quanta 交换机,它的结果与 Cisco 不同,显然我不能使用 textfsm 模板。由于没有 Quanta 交换机和 textfsm 的任何资源,我决定自己编辑它。

问题是 textfsm 正在读取第一行 - 我如何跳过第一行?这是我的广达结果:

                                         Link    Physical    Physical    Media               Flow Control
Port       Name                          State   Mode        Status      Type                Status

textfsm 是只读链接 - 物理、物理、媒体、流控制

但我希望它从第二行开始读取,即端口、名称、状态、模式等。

这是我的 textfsm 代码:​​(最初用于 Cisco)

Value PORT (\S+)
Value STATUS (up|down|deleted|admin\s+down)
Value PROTOCOL (up|down)
Value DESCRIP (\S.*?)

Start
  ^Next
  ^Port\s+Name\s+Link State\s+Pysical Mode\s*$$ -> Begin
  ^\s*$$
  # Capture time-stamp if vty line has command time-stamping turned on
  ^Load\s+for\s+
  ^Time\s+source\s+is
  ^. -> Error

Begin
  ^${PORT}\s+${STATUS}\s+${PROTOCOL}(?:\s+${DESCRIP})?\s*$$ -> Record
  ^\s*$$
  ^. -> Error

这里是 Python 调用它:

raw_text_data = out

template = open("/var/www/html/template/assets/textfsm/showDescQ.textfsm")
re_table = textfsm.TextFSM(template)
fsm_results = re_table.ParseText(raw_text_data)

outfile_name = open("/var/www/html/01.csv", "w+")
outfile = outfile_name

for s in re_table.header:
    outfile.write("%s," % s)
outfile.write("\n")

counter = 0
for row in fsm_results:
    for s in row:
        outfile.write("%s," % s)
    outfile.write("\n")
    counter += 1
outfile.close()
print("done!")
4

0 回答 0