2016-02-13 61 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」] 但是那個沒有工作,謝謝隊友。 –