Cisco Nexus 5500 7.3.(3)N1(1) tcl 脚本

网络工程 cisco-nexus cisco-nexus-5k
2022-02-10 21:57:31

谁能告诉我为什么这个 tcl 命令没有被这个版本的 Nexus 识别?

someswitch-tcl# for { set i 1 } { $i < 10 } { incr i } { cli "ping vrf XYZ 10.xx.xx.$i" }
                      ^
% Invalid command at '^' marker.

此处可能无法正确显示,但在终端中,标记显示在“set”中字母 s 的正下方。

我尝试按照此博客中的指南进行操作,其中建议此类命令集应在 Nexus 设备上运行。

有任何想法吗?

2个回答

有任何想法吗?

是的。看起来你的 ping 语法是错误的。要进行验证,请退出 TCL shell 并尝试从脚本中运行相同的 ping 命令并替换为适当的值:ping vrf XYZ 10.xx.xx.1

您可能会收到完全相同的错误消息。相反,您的命令应该看起来更像:ping 10.xx.xx.1 vrf XYZ.

您还可以在 TCL shell 中尝试以下类似操作,以验证您的命令的其余部分是否按预期工作:for { set i 1 } { $i < 10 } { incr i } { puts $i }

在进行故障排除时,您通常可以通过简化您正在使用的内容并单独测试组件以查看失败的原因来轻松隔离问题。

这是我制作的脚本模板,用于执行 ping 扫描,然后显示 ARP 表以获取结果。您可以修改它以满足您的需要。

----- BEGIN NX-OS TCL SCRIPT ------
tclsh
for {set i 1} {$i <= 254} {incr i} {
set var 10.0.0.
append var $i
exec "ping $var count 1 timeout 0"}
tclquit
sh ip arp | in 10.0.0.
----- END NX-OS TCL SCRIPT ------

如果您还想要我的脚本的 IOS 变体,就可以了。

------ BEGIN IOS TCL SCRIPT ------
tclsh
for {set i 1} {$i <= 254} {incr i} {
set var 10.0.0.
append var $i
exec "ping $var repeat 1 timeout 0"}
tclquit
sh ip arp | in 10.0.0.
----- END IOS TCL SCRIPT ------

请注意,它几乎是相同的。唯一的区别是“重复”这个词而不是“计数”,因为这是思科在语法上的唯一区别。