tclsh формат snmp

Я пытаюсь получить значение из экземпляра с OID с помощью команды tcl.

В 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)

person Dawei Zhang    schedule 13.02.2016    source источник


Ответы (1)


Вы должны использовать команду 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
person Dinesh    schedule 14.02.2016
comment
Большое спасибо, это сработало! Я действительно пытался; 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] Но это не сработало, спасибо, приятель. - person Dawei Zhang; 14.02.2016