SNMPv3执行snmptrap报i: Missing type/value for variable错误
SNMP Trap发送报错排查
故障描述
发送SNMPv3 Trap报文时返回错误提示:i: Missing type/value for variable,对照多份示例脚本核查参数,未发现明显配置错误。
故障复现的执行命令如下:
eval snmptrap -v 3 -u XXX -l authPriv -a SHA -A XXXPASS -x AES-128 -X XXXPASS2 testserver:20462 '' 1.3.6.1.4.1.11150.106.1.1.1 1.3.6.1.4.1.11150.1.3.23 i 33
根因分析
报错核心原因是命令开头多余的eval关键字破坏了shell参数解析逻辑:
命令中用空字符串''作为SNMPv3 Trap的上下文引擎ID参数,eval执行命令时会直接丢弃空引号包裹的空参数,导致后续所有参数向前错位一位:原本作为Trap OID的1.3.6.1.4.1.11150.106.1.1.1被识别为上下文引擎ID,原本作为变量绑定OID的1.3.6.1.4.1.11150.1.3.23被识别为Trap OID,后续的类型标识i被识别为第一个变量绑定的OID,此时该OID后缺少配对的类型、值参数,直接触发对应报错。
修复方案
- 删除命令开头无实际作用的
eval关键字,保证空字符串参数能被正确识别,参数顺序不发生错位。 - 若使用较老版本的Net-SNMP工具集,可将加密算法参数
-x AES-128调整为-x AES,避免版本兼容导致的参数识别问题。
修正后的可执行命令参考:
snmptrap -v 3 -u XXX -l authPriv -a SHA -A XXXPASS -x AES -X XXXPASS2 testserver:20462 '' 1.3.6.1.4.1.11150.106.1.1.1 1.3.6.1.4.1.11150.1.3.23 i 33
内容的提问来源于stack exchange,提问作者macieira
相关产品推荐
相关产品推荐

