There are two popular ways to do SNMP with Perl that I am aware of. The Net::SNMP module from CPAN is actually different from the module you get if you download the Net-SNMP (formerly ucd-snmp) source from http://net-snmp.sourceforge.net/ and build it.
I've used both in an extremely high-volume network management system, and ended up having to switch to Net-SNMP a year or so ago, due to some flakiness on snmpgets and traps. I might have had as many as 16 simutaneous snmpgets on this system with around 200 of them firing off spread across two minute intervals.
To be fair, I can't say the system libraries were known to be perfect, but it was pretty much a stock 7.2 setup.
Net::SNMP (above) from CPAN is easier to use, where the Net-SNMP module implementation is more arcane.. but very stable for me, outbound traps to NetCool were clearly more reliable.
You're going to have to build Net-SNMP from source to use the Perl modules (you need to cd into the perl directory and do a separate make ; make install as well, after the main build). So, remove any debs/rpms/etc before you do that make install.
I can't recall if you could do TCP through Net::SNMP, but I know you can with the Net-SNMP (formerly ucd). Thanks for reading all this, hope it helped.
-vlad
| [reply] |
Could you reply with some details on how you configured a Net-SNMP client (in C or Perl) to use TCP. I am at a loss to understand how it is done. Every client I have seen uses udp.
Thanks,
--habit
| [reply] |
I don't see any reason why you want to use SNMP over TCP, its works pretty well using Net::SNMP module. If you want to optimize performance , use nonblocking mode in Net::SNMP module.
Neeraj. | [reply] |
| [reply] |
| [reply] |
Alright I found it! Here is the deal. snmpwalk has an undocumented switch, -T. The -T switch is deprecated and points us to use the host form protocol:hostname . This means that TCP:my.server.net actually uses the snmp over tcp. This warning from the -T switch seems to be the only place the TCP:my.server.net host form is documented. Oh well, at least I know it now. =)
Since I don't have any problem with qx()'ing snmpwalk and parsing the output, this will do just fine.
--habit | [reply] [d/l] [select] |