TCL脚本语言如何获取snmp索引输出的值
How to get value of snmp index outputs in TCL scripting language
我需要一个脚本来找到所有禁用的端口 (ifAdminStatus=1) 并取消关闭它们(或任何其他操作)
问题是我无法通过 if 命令获取值。好像我错过了什么。
如您所见,索引为 20 的接口的 ifAdminStatus 值为 1
...
Router(tcl)#snmp_getone Public ifAdminStatus.20
{<obj oid='ifAdminStatus.20' val='1'/>}
...
但我无法通过 If 语句获取它。测试了以下语法但没有成功
...
Router(tcl)#
Router(tcl)#if {snmp_getone Public ifAdminStatus.20 ==1 } {puts "Value=1"}
syntax error in expression "snmp_getone Public ifAdminStatus.20 ==1 "
Router(tcl)#
Router(tcl)#if {'snmp_getone Public ifAdminStatus.20' ==1 } {puts "Value=1"}
syntax error in expression "'snmp_getone Public ifAdminStatus.20' ==1 "
Router(tcl)#if {[snmp_getone Public ifAdminStatus.20] ==1 } {puts "Value=1"}
...
我只是想如果值为1就返回1。然后我应该将它扩展到所有端口并制作接口数组,制作动作等
如有任何帮助,我们将不胜感激。
鉴于此
snmp_getone Public ifAdminStatus.20
returns这个
{<obj oid='ifAdminStatus.20' val='1'/>}
写的时候
if {[snmp_getone Public ifAdminStatus.20] == _something_} { ...
那么_something_
就不会是"1"
.
您必须解析 snmp_getone 命令的结果以提取 val
属性的值。也许,又快又脏:
set status [snmp_getone Public ifAdminStatus.20]
regexp {val='(.+?)'} $status -> val
if {$val == 1} {...
我需要一个脚本来找到所有禁用的端口 (ifAdminStatus=1) 并取消关闭它们(或任何其他操作) 问题是我无法通过 if 命令获取值。好像我错过了什么。
如您所见,索引为 20 的接口的 ifAdminStatus 值为 1
...
Router(tcl)#snmp_getone Public ifAdminStatus.20
{<obj oid='ifAdminStatus.20' val='1'/>}
...
但我无法通过 If 语句获取它。测试了以下语法但没有成功
...
Router(tcl)#
Router(tcl)#if {snmp_getone Public ifAdminStatus.20 ==1 } {puts "Value=1"}
syntax error in expression "snmp_getone Public ifAdminStatus.20 ==1 "
Router(tcl)#
Router(tcl)#if {'snmp_getone Public ifAdminStatus.20' ==1 } {puts "Value=1"}
syntax error in expression "'snmp_getone Public ifAdminStatus.20' ==1 "
Router(tcl)#if {[snmp_getone Public ifAdminStatus.20] ==1 } {puts "Value=1"}
...
我只是想如果值为1就返回1。然后我应该将它扩展到所有端口并制作接口数组,制作动作等
如有任何帮助,我们将不胜感激。
鉴于此
snmp_getone Public ifAdminStatus.20
returns这个
{<obj oid='ifAdminStatus.20' val='1'/>}
写的时候
if {[snmp_getone Public ifAdminStatus.20] == _something_} { ...
那么_something_
就不会是"1"
.
您必须解析 snmp_getone 命令的结果以提取 val
属性的值。也许,又快又脏:
set status [snmp_getone Public ifAdminStatus.20]
regexp {val='(.+?)'} $status -> val
if {$val == 1} {...