如何使用tcl/expect捕获Cisco Nexus设备上的计数端口?

如何使用tcl/expect捕获Cisco Nexus设备上的计数端口?,tcl,expect,cisco,Tcl,Expect,Cisco,我编写了一个脚本来捕获Cisco Nexus设备上连接的端口数,如下所示: 思科指挥部: example01#sh interface status | i connected | exclude Po | exclude Lo|count 13 example01# 脚本部分: send "sh interface status \| i connected \| exclude Po \| exclude Lo \| count\r" expect -re {([0-9]+)} set C

我编写了一个脚本来捕获Cisco Nexus设备上连接的端口数,如下所示:

思科指挥部:

example01#sh interface status | i connected | exclude Po | exclude Lo|count
13
example01#
脚本部分:

send "sh interface status \| i connected \| exclude Po \| exclude Lo \| count\r"
expect -re {([0-9]+)}
set COUNT "$expect_out(0,string)"
puts "$COUNT\r"
问题是设备的主机名也有数字,比如01。当我保存输出时,我看到的只是“01”,而不是我期望的正确输出(本例为13)。

我这样做:

send "sh interface status \| i connected \| exclude Po \| exclude Lo \| count\r"
expect -re {([0-9]+)\r\n}
set COUNT "$expect_out(0,string)"
puts "$COUNT\r"

现在,输出是正确的,因为我用
\r\n

做了一个换行符,您可能还可以在正则表达式的开头放置一个
^
{^([0-9]+)\r\n}
,以进一步限制可能性。