【发布时间】:2017-11-27 10:04:00
【问题描述】:
我正在尝试使用 TCL 处理 cisco 路由器上的所有接口。目前我正在使用以下两个命令:
set int_out [exec "show interface description"]
输出
Interface Status Protocol Description
Fa0/0 up up ** REDACTED **
Fa0/0.209 up up ** REDACTED **
Fa0/0.790 up up ** REDACTED **
Fa0/1 admin down down
.
foreach int [regexp -all -line -inline "^(\[^ ]+)" $int_out] { show clock; puts $int }
输出
18:25:16.461 UTC Fri Jun 23 2017Interface
18:25:16.465 UTC Fri Jun 23 2017Interface
18:25:16.469 UTC Fri Jun 23 2017Fa0/0
18:25:16.469 UTC Fri Jun 23 2017Fa0/0
18:25:16.473 UTC Fri Jun 23 2017Fa0/0.209
18:25:16.473 UTC Fri Jun 23 2017Fa0/0.209
18:25:16.477 UTC Fri Jun 23 2017Fa0/0.790
18:25:16.477 UTC Fri Jun 23 2017Fa0/0.790
18:25:16.481 UTC Fri Jun 23 2017Fa0/1
18:25:16.481 UTC Fri Jun 23 2017Fa0/1
我的目标是从 show interface description 生成的每一行输出中获取接口名称,然后在屏幕上打印出来。但是正如你所看到的,当我在屏幕上打印数据时,我得到了重复。我最初认为这可能是由于某种屏幕上的日志记录功能,但我在输出中包含的时间戳似乎另有说明。例如,第一个接口行的时间戳为 18:25:16.461,而第二个接口行的时间戳为 18:25:16.465。
我可以做些什么来解决这个问题?我认为这可能是我的正则表达式字符串的问题,它从每行中抓取第一个单词。
【问题讨论】: