• MRTG cfgmaker Net::snmp error when using snmpV3 with APC UPS network ca

    From ted.m.w@comcast.net@21:1/5 to All on Sun Jun 12 09:36:02 2016
    Hello

    I asked about this already on perl's Net::SNMP list. It was pointed out that the Net::SNMP module hasn't changed in (about) 6 years, and I have confirmed that I have the latest version of Net::SNMP.

    # cpan -D Net::SNMP
    ...
    Installed: v6.0.1
    CPAN: v6.0.1 up to date
    ...

    In any case, I have recently decided to get snmp working on my network to be used with icinga2 for monitoring. To that end, I was going to use MRTG (via the
    check_mrtgtraf monitoring plugin for nagios/icinga) to watch network interface usage.

    I have set up net-snmp and this is working. I also have set up snmp on several pieces of hardware that include snmp capabilities. As a matter of principle, I have enabled snmpV3 where available.

    But, while I have had no problems with snmpV3 using net-snmp, for one class of hardware (old APC UPS Network Management cards - Model AP9617 circa 2007), I have no trouble getting snmp data using snmpV3 with net-snmp, but snmpV3 fails with cfgmaker (although snmpV1 works).

    First, as an example, with a non-problem piece of hardware (an old HP LaserJet printer):

    Using net-smnp tools:

    # snmpwalk -v 3 -a MD5 -A <pass> -u <user> -x DES -X <pass> -l authPriv -n Jetdirect 10.0.128.250
    SNMPv2-MIB::sysDescr.0 = STRING: HP ETHERNET MULTI-ENVIRONMENT,ROM C.25.80,JETDIRECT,JD115,EEPROM V.28.06,CIDATE 04/27/2004 SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.11.2.3.9.1 SNMPv2-MIB::sysUpTime.0 = Timeticks: (240889502) 27 days, 21:08:15.02 SNMPv2-MIB::sysContact.0 = STRING:
    SNMPv2-MIB::sysName.0 = STRING: <name>
    SNMPv2-MIB::sysLocation.0 = STRING:
    SNMPv2-MIB::sysServices.0 = INTEGER: 64
    ....ETC....

    If I use MRTG's cfgmaker:

    # /usr/local/bin/cfgmaker --ifref=eth --enablesnmpv3 --username <user> --authpassword <pass> --authprotocol md5 --privprotocol des --privpassword <pass> --contextengineid 0x0000000b00110abb64570001 --contextname Jetdirect 10.0.128.250:::::3
    --base: SNMP V3 libraries found, SNMP V3 enabled.
    --base: Get Device Info on public@10.0.128.250:::::3
    --base: Vendor Id: hp
    --base: Populating confcache
    --base: Get Interface Info
    --base: Walking ifIndex
    --snpd: public@10.0.128.250:::::3 -> 1 -> ifIndex = 1
    --snpd: public@10.0.128.250:::::3 -> 2 -> ifIndex = 2
    ....ETC....

    If I try to use snmpv3 with the APC hardware, net-snmp works:

    # snmpwalk -v 3 -a MD5 -A <pass> -u <user> -x DES -X <pass> -l authPriv 10.0.128.182
    SNMPv2-MIB::sysDescr.0 = STRING: APC Web/SNMP Management Card (MB:v3.9.2 PF:v3.7.3 PN:apc_hw02_aos_373.bin AF1:v3.7.2 AN1:apc_hw02_sumx_372.bin MN:AP9617
    HR:5 SN: JA0143000596 MD:10/24/2001) (Embedded PowerNet SNMP Agent SW v2.2 compatible)
    SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.318.1.3.2.8 SNMPv2-MIB::sysUpTime.0 = Timeticks: (19348130) 2 days, 5:44:41.30 SNMPv2-MIB::sysContact.0 = STRING: <me@my.com>
    SNMPv2-MIB::sysName.0 = STRING: <name>
    SNMPv2-MIB::sysLocation.0 = STRING: <location>
    SNMPv2-MIB::sysServices.0 = INTEGER: 72
    SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
    SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
    SNMPv2-MIB::sysORID.2 = OID: SNMPv2-SMI::snmpModules.10.3.1.1 SNMPv2-MIB::sysORID.3 = OID: SNMPv2-SMI::snmpModules.11.3.1.1 SNMPv2-MIB::sysORID.4 = OID: SNMPv2-SMI::snmpModules.15.2.1.1 SNMPv2-MIB::sysORID.5 = OID: SNMPv2-SMI::snmpModules.16.2.1.1 SNMPv2-MIB::sysORDescr.1 = STRING: The MIB Module from SNMPv2 entities SNMPv2-MIB::sysORDescr.2 = STRING: SNMP Management Architecture MIB SNMPv2-MIB::sysORDescr.3 = STRING: Message Processing and Dispatching MIB SNMPv2-MIB::sysORDescr.4 = STRING: USM User MIB
    SNMPv2-MIB::sysORDescr.5 = STRING: VACM MIB
    SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
    SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00
    SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00
    SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00
    SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00
    ....ETC...

    Also, I can connect to the hardware with snmpV1 via cfgmaker:

    # cfgmaker --ifref=eth public@10.0.128.182
    --base: Get Device Info on public@10.0.128.182:
    --base: Vendor Id: Unknown Vendor - 1.3.6.1.4.1.318.1.3.2.8
    --base: Populating confcache
    --base: Get Interface Info
    --base: Walking ifIndex
    --snpd: valinor@10.0.128.182: -> 1 -> ifIndex = 1
    --snpd: valinor@10.0.128.182: -> 2 -> ifIndex = 2
    ...ETC...

    But, with cfgmaker and smnpV3, I see:

    # /usr/local/bin/cfgmaker --ifref=eth --enablesnmpv3 --username <user> --authpassword <pass> --authprotocol md5 --privprotocol des --privpassword <pass> --contextengineid 0x8000013E0300C0B764D02C 10.0.128.182:::::3
    --base: SNMP V3 libraries found, SNMP V3 enabled.
    --base: Get Device Info on public@10.0.128.182:::::3
    Use of uninitialized value in pattern match (m//) at /usr/local/libdata/perl5/site_perl/Net/SNMP.pm line 2620.
    SNMPopen failed: Time synchronization failed during discovery
    at /usr/local/libdata/perl5/site_perl/Net_SNMP_util.pm line 1580.
    Net_SNMP_util::snmpopen("public\@10.0.128.182:::::3:v4only", 0, ARRAY(0x1e34855688f8)) called at /usr/local/libdata/perl5/site_perl/Net_SNMP_util.pm line 1690
    Net_SNMP_util::snmpwalk_flg("public\@10.0.128.182:::::3:v4only", undef, HASH(0x1e34dcbad868), "1.3.6.1.2.1.1") called at /usr/local/libdata/perl5/site_perl/Net_SNMP_util.pm line 786
    Net_SNMP_util::snmpwalk("public\@10.0.128.182:::::3:v4only", HASH(0x1e34dcbad868), "1.3.6.1.2.1.1") called at /usr/local/bin/cfgmaker line 951
    main::DeviceInfo("public\@10.0.128.182:::::3", HASH(0x1e34da908af0), HASH(0x1e34dcbad868)) called at /usr/local/bin/cfgmaker line 142
    main::main() called at /usr/local/bin/cfgmaker line 160
    SNMPWALK Problem for public@10.0.128.182:::::3:v4only at /usr/local/bin/cfgmaker
    line 951.
    WARNING: Skipping public@10.0.128.182:::::3 as no info could be retrieved

    Use of uninitialized value $comment_sysdescr in substitution (s///) at /usr/local/bin/cfgmaker line 379.
    Use of uninitialized value $sysname in concatenation (.) or string at /usr/local/bin/cfgmaker line 412.
    Use of uninitialized value $comment_sysdescr in concatenation (.) or string at /usr/local/bin/cfgmaker line 412.
    Use of uninitialized value $syscontact in concatenation (.) or string at /usr/local/bin/cfgmaker line 412.
    Use of uninitialized value $syslocation in concatenation (.) or string at /usr/local/bin/cfgmaker line 412.
    ....ETC...


    Not really knowing what I am talking about, it appears that cfgmaker calls Net::snmp; then Net::snmp tries to establish a snmpV3 connection with the hardware, but fails: "Use of uninitialized value in pattern match (m//) at /usr/local/libdata/perl5/site_perl/Net/SNMP.pm line 2620."

    I don't know if this is an issue with the variables being passed to Net::SMNP by cfgmaker, or something else. While the problem could be with the hardware, that seems unlikely since net-snmp tools work with it.

    I would like to get this working. If anyone has any ideas on what I could do/try to get this working, please let me know.

    Thanks in advance.
    Ted

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)