代码之家  ›  专栏  ›  技术社区  ›  LMC

在snmpd.conf中使用net snmp extend时笔后的oid对象

  •  0
  • LMC  · 技术社区  · 6 年前

    linux net snmp代理可以在/etc/snmp/snmpd.conf上使用笔(私有企业号)进行扩展( man snmpd.conf 详情)

    # from the man page: extend [MIBOID] NAME PROG ARGS
    extend .1.3.6.1.4.1.32473 2 /tmp/snmp.sh
    

    sh是一个简单的bash脚本,它将用一些奇怪的退出代码来回显传递的参数或当前日期。

    #!/bin/bash
    
    if [ -n "$1" ]; then
        echo "$1"
        exit 51
    fi
    
    /bin/date '+%F %T'
    
    exit 37
    

    运行 snmpwalk 在那种

    snmpwalk -c public -v 2c 127.0.0.1 SNMPv2-SMI::enterprises.32473
    

    退换商品

    SNMPv2-SMI::enterprises.32473.1.0 = INTEGER: 1
    SNMPv2-SMI::enterprises.32473.2.1.2.1.50 = STRING: "/tmp/snmp.sh"
    SNMPv2-SMI::enterprises.32473.2.1.3.1.50 = ""
    SNMPv2-SMI::enterprises.32473.2.1.4.1.50 = ""
    SNMPv2-SMI::enterprises.32473.2.1.5.1.50 = INTEGER: 5
    SNMPv2-SMI::enterprises.32473.2.1.6.1.50 = INTEGER: 1
    SNMPv2-SMI::enterprises.32473.2.1.7.1.50 = INTEGER: 1
    SNMPv2-SMI::enterprises.32473.2.1.20.1.50 = INTEGER: 4
    SNMPv2-SMI::enterprises.32473.2.1.21.1.50 = INTEGER: 1
    SNMPv2-SMI::enterprises.32473.3.1.1.1.50 = STRING: "2018-06-07 20:53:44"
    SNMPv2-SMI::enterprises.32473.3.1.2.1.50 = STRING: "2018-06-07 20:53:44"
    SNMPv2-SMI::enterprises.32473.3.1.3.1.50 = INTEGER: 1
    SNMPv2-SMI::enterprises.32473.3.1.4.1.50 = INTEGER: 37
    SNMPv2-SMI::enterprises.32473.4.1.2.1.50.1 = STRING: "2018-06-07 20:53:44"
    

    试图解释这些数字 32473 笔是否保留用于示例和文档,以便在本地用于测试 50 是ASCII字符的十进制值 2 这个名字。

    使用 -Of -Os 具有 SNMPOWS snmptranslate 提供对树的解释是行不通的,输出显示的是简单的数字

    snmptranslate -OS -Td SNMPv2-SMI::enterprises.32473.2.1.1.50
    

    结果

    SNMPv2-SMI::enterprises.32473.2.1.1.50
    enterprises OBJECT-TYPE
    -- FROM       SNMPv2-SMI
    ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) 32473 2 1 1 50 }
    

    32473之后的对象(数字)是什么意思?

    1 回复  |  直到 6 年前
        1
  •  0
  •   LMC    6 年前

    可以通过与 snmpwalk 另一种形式的 extend 不使用笔oid的选项

    extend 3 /tmp/snmp.sh 787878
    

    运行一个 SNMPOWS 获取符号名称

    snmpwalk -c public -v 2c localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
    

    结果:

    NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1
    NET-SNMP-EXTEND-MIB::nsExtendCommand."3" = STRING: /tmp/snmp.sh
    NET-SNMP-EXTEND-MIB::nsExtendArgs."3" = STRING: 787878
    NET-SNMP-EXTEND-MIB::nsExtendInput."3" = STRING:
    NET-SNMP-EXTEND-MIB::nsExtendCacheTime."3" = INTEGER: 5
    NET-SNMP-EXTEND-MIB::nsExtendExecType."3" = INTEGER: exec(1)
    NET-SNMP-EXTEND-MIB::nsExtendRunType."3" = INTEGER: run-on-read(1)
    NET-SNMP-EXTEND-MIB::nsExtendStorage."3" = INTEGER: permanent(4)
    NET-SNMP-EXTEND-MIB::nsExtendStatus."3" = INTEGER: active(1)
    NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."3" = STRING: 787878
    NET-SNMP-EXTEND-MIB::nsExtendOutputFull."3" = STRING: 787878
    NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."3" = INTEGER: 1
    NET-SNMP-EXTEND-MIB::nsExtendResult."3" = INTEGER: 51
    NET-SNMP-EXTEND-MIB::nsExtendOutLine."3".1 = STRING: 787878
    

    添加 -On 为了得到数值输出

    .1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1
    .1.3.6.1.4.1.8072.1.3.2.2.1.2.1.51 = STRING: /tmp/snmp.sh
    .1.3.6.1.4.1.8072.1.3.2.2.1.3.1.51 = STRING: 787878
    .1.3.6.1.4.1.8072.1.3.2.2.1.4.1.51 = STRING: 
    .1.3.6.1.4.1.8072.1.3.2.2.1.5.1.51 = INTEGER: 5
    .1.3.6.1.4.1.8072.1.3.2.2.1.6.1.51 = INTEGER: exec(1)
    .1.3.6.1.4.1.8072.1.3.2.2.1.7.1.51 = INTEGER: run-on-read(1)
    .1.3.6.1.4.1.8072.1.3.2.2.1.20.1.51 = INTEGER: permanent(4)
    .1.3.6.1.4.1.8072.1.3.2.2.1.21.1.51 = INTEGER: active(1)
    .1.3.6.1.4.1.8072.1.3.2.3.1.1.1.51 = STRING: 787878
    .1.3.6.1.4.1.8072.1.3.2.3.1.2.1.51 = STRING: 787878
    .1.3.6.1.4.1.8072.1.3.2.3.1.3.1.51 = INTEGER: 1
    .1.3.6.1.4.1.8072.1.3.2.3.1.4.1.51 = INTEGER: 55
    .1.3.6.1.4.1.8072.1.3.2.4.1.2.1.51.1 = STRING: 787878
    

    钢笔练习的数字输出是

     snmpwalk -On -c public -v 2c 127.0.0.1 SNMPv2-SMI::enterprises.32473
    
    .1.3.6.1.4.1.32473.1.0 = INTEGER: 1
    .1.3.6.1.4.1.32473.2.1.2.1.50 = STRING: "/tmp/snmp.sh"
    .1.3.6.1.4.1.32473.2.1.3.1.50 = ""
    .1.3.6.1.4.1.32473.2.1.4.1.50 = ""
    .1.3.6.1.4.1.32473.2.1.5.1.50 = INTEGER: 5
    .1.3.6.1.4.1.32473.2.1.6.1.50 = INTEGER: 1
    .1.3.6.1.4.1.32473.2.1.7.1.50 = INTEGER: 1
    .1.3.6.1.4.1.32473.2.1.20.1.50 = INTEGER: 4
    .1.3.6.1.4.1.32473.2.1.21.1.50 = INTEGER: 1
    .1.3.6.1.4.1.32473.3.1.1.1.50 = STRING: "2018-06-07 20:24:36"
    .1.3.6.1.4.1.32473.3.1.2.1.50 = STRING: "2018-06-07 20:24:36"
    .1.3.6.1.4.1.32473.3.1.3.1.50 = INTEGER: 1
    .1.3.6.1.4.1.32473.3.1.4.1.50 = INTEGER: 33
    .1.3.6.1.4.1.32473.4.1.2.1.50.1 = STRING: "2018-06-07 20:24:36"
    

    现在我们可以一行一行地比较这两个练习,方法是将公共部分放在最后,并添加一些方便的格式

    EX1: .1.3.6.1.4.1.32473. 1.0 = INTEGER: 1
    EX2: .1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1

    对所有条目执行相同操作并逐行比较:

    nsExtendNumEntries   .1.0 = INTEGER: 1
    nsExtendCommand      .2.1.2.1.50 = STRING: "/tmp/snmp.sh"
    nsExtendArgs         .2.1.3.1.50 = ""
    nsExtendInput        .3.2.1.4.1.50 = ""
    nsExtendCacheTime    .2.1.5.1.50 = INTEGER: 5
    nsExtendExecType     .2.1.6.1.50 = INTEGER: 1
    nsExtendRunType      .2.1.7.1.50 = INTEGER: 1
    nsExtendStorage      .2.1.20.1.50 = INTEGER: 4
    nsExtendStatus       .2.1.21.1.50 = INTEGER: 1
    nsExtendOutput1Line  .3.1.1.1.50 = STRING: "2018-06-07 20:24:36"
    nsExtendOutputFull   .3.1.2.1.50 = STRING: "2018-06-07 20:24:36"
    nsExtendOutNumLines  .3.1.3.1.50 = INTEGER: 1
    nsExtendResult       .3.1.4.1.50 = INTEGER: 37
    nsExtendOutLine      .4.1.2.1.50.1 = STRING: "2018-06-07 20:24:36"