我有以下用于“显示接口描述”的 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!")