【问题标题】:Tclsh snmp formattclsh snmp 格式
【发布时间】:2016-02-13 20:04:33
【问题描述】:

我正在尝试使用 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 行)

【问题讨论】:

    标签: tcl snmp net-snmp tclsh


    【解决方案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
    

    【讨论】:

    • 非常感谢,它成功了!我实际上尝试过; 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"] 但是那个没有用,谢谢队友。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多