2016-02-13 90 views
0

我想从使用tcl命令的OID实例中获取值。Tclsh snmp格式

在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] 

然后我得到了错误:

 
invalid command name "snmpwalk" 
    while executing 
"snmpwalk -Os -c public -v 2c 192.168.1.20 .1.3.6.1.4.1.31926.2.1.1.19" 
    invoked from within 
"array set snmp_result [snmpwalk -Os -c public -v 2c 192.168.1.20 .1.3.6.1.4.1.31926.2.1.1.19]" 
    (file "./siklu.tcl" line 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] 

但是,这给了我这个错误:

 
invalid command name "sys_reqinfo_snmp" 
    while executing 
"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" 
    invoked from within 
"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 axact]" 
    (file "./siklu.tcl" line 2) 

回答

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 
+0

非常感谢,它的工作!我实际上尝试过; 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”] 但是那个没有工作,谢谢队友。 –