0

我正在尝试使用 tcl 命令从具有 OID 的实例中获取值。

在 TCL 中,该命令有效:

% set snmp_result [snmpwalk -Os -c public -v 2c 192.168.1.20 .1.3.6.1.4.1.31926.2.1.1.19]
iso.3.6.1.4.1.31926.2.1.1.19.1 = INTEGER: -57

我试图只得到数字 -57,所以我写了一个 tclsh 脚本:

set snmp_result [snmpwalk -Os -c public -v 2c 192.168.1.20 .1.3.6.1.4.1.31926.2.1.1.19]
set splitted_result [split $snmp_result ""]
puts [lindex $splitted_result 3]

然后我得到了错误:

无效的命令名称“snmpwalk”
    在执行时
“snmpwalk -Os -c 公共 -v 2c 192.168.1.20 .1.3.6.1.4.1.31926.2.1.1.19”
    从内部调用
“数组集 snmp_result [snmpwalk -Os -c public -v 2c 192.168.1.20 .1.3.6.1.4.1.31926.2.1.1.19]”
    (文件“./siklu.tcl”第 1 行)

我还了解到 tclsh 是 EEM 策略,所以我尝试了:

array set snmp_res [sys_reqinfo_snmp -c public -v 2c 192.168.1.20 oid .1.3.6.1.4.1.31926.2.1.1.19 get_type exact]

但这给了我这个错误:

无效的命令名称“sys_reqinfo_snmp”
    在执行时
“sys_reqinfo_snmp -c public -v 2c 192.168.1.20 oid .1.3.6.1.4.1.31926.2.1.1.19 get_type 准确”
    从内部调用
“数组集 snmp_res [sys_reqinfo_snmp -c public -v 2c 192.168.1.20 oid .1.3.6.1.4.1.31926.2.1.1.19 get_type axact]”
    (文件“./siklu.tcl”第 2 行)
4

1 回答 1

0

您必须使用exec命令来执行它们。

set snmp_result [exec snmpwalk -Os -c public -v 2c 192.168.1.20 .1.3.6.1.4.1.31926.2.1.1.19]
puts $snmp_result
于 2016-02-14T01:22:55.817 回答