抑制 IOS 上的 CLI 终端输出

网络工程 思科 思科-ios 命令行
2021-07-07 02:27:01

我想知道我们是否可以禁止在 CLI 上显示某些行。示例:我调用了以下 TCL 脚本,它本身调用了一些其他脚本。我在屏幕上看到的是:

switch#tclsh tftp://172.16.1.1/aliasmenu.tcl cpu
Loading aliasmenu.tcl from 172.16.222.89 (via Vlan10): !
[OK - 7140 bytes]
Calling second script
Loading aliascpu.tcl from 172.16.1.1 (via Vlan10): !
[OK - 198 bytes]
The argument given was cpu

我想看到的只是这个:

switch#tclsh tftp://172.16.1.1/aliasmenu.tcl cpu
Calling second script
The argument given was cpu

所以我正在寻找一种方法来抑制SSH VTY 终端输出加载命令。我已经尝试过一些鉴别器命令:

logging discriminator HIDETCL msg-body drops Loading    
logging buffered discriminator HIDETCL
logging console discriminator HIDETCL
logging monitor discriminator HIDETCL

但它们只适用于日志消息。加载命令无法登录的消息,但直接输出到CLI。我也尝试了该file prompt quiet命令,因为我认为复制命令可能在 TCLsh 命令后面。但没有任何运气。其他人可能不得不处理这种类型的请求?

2个回答

我想知道我们是否可以禁止在 CLI 上显示某些行。

您最基本的问题是您试图使用日志记录命令删除非日志记录消息

您不能使这些消息消失,因为它们不被视为日志消息:

Loading aliasmenu.tcl from 172.16.222.89 (via Vlan10): !
[OK - 7140 bytes]

考虑查看 的输出,show log您会发现上面的行从未添加到日志记录缓冲区中。

我设法使用 TCL 脚本完成了我想要的操作,该脚本位于本地闪存存储上。如果我发出命令,它会尝试从 TFTP 服务器下载同名的 TCL 脚本,并且不会在 CLI 中显示“加载”部分。这是本地脚本:

set proto "http://"
set host "172.16.20.5"
set path "/alias/"
set filename "help"
set extension ".tcl"
set remotepath "$proto$host$path$filename$extension"
set localpath "flash:$filename$extension"

if {$argc == "0"} {
        exec "copy $remotepath $localpath"
        source $localpath
        workload $argc $argv
        exec "delete $localpath"
} else {
        set filename [lindex $argv 0]
        set fakefilename "fake"
        set remotepath "$proto$host$path$filename$extension"
        set localpath "flash:$filename$extension"
        set remotefakepath "$proto$host$path$fakefilename$extension"
        set localfakepath "flash:$fakefilename$extension"
        set fakecopy [exec "copy $remotefakepath $localfakepath"]
        set copyresult [exec "copy $remotepath $localpath"]
        if {[lindex [exec "dir | include _$filename$extension"] 8] == "$filename$extension"} {
                source $localpath
                workload $argc $argv
                exec "delete /force $localpath"
        } else {
                puts "Command $argv not found. Use 'get help' for a list of available commands."
        }
}

Switch上有如下配置:

alias exec get tclsh flash:alias.tcl

所以如果我输入

获取 CPU

该脚本尝试下载http://172.16.20.5/alias/cpu.tcl并运行它。所以我可以在所有设备上部署一个非常短的脚本,但仍然可以集中修改和部署新脚本。