diff options
| -rwxr-xr-x | nms/prototype/foo.pl | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/nms/prototype/foo.pl b/nms/prototype/foo.pl new file mode 100755 index 0000000..0dfd8ba --- /dev/null +++ b/nms/prototype/foo.pl @@ -0,0 +1,48 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use SNMP; +use Data::Dumper; + +SNMP::initMib(); +SNMP::addMibDirs("/srv/tgmanage/mibs"); +#SNMP::addMibDirs("/tmp/tmp.X6Xt4LvFKn/v2"); +SNMP::loadModules('SNMPv2-MIB'); +SNMP::loadModules('ENTITY-MIB'); +SNMP::loadModules('IF-MIB'); +SNMP::loadModules('LLDP-MIB'); +SNMP::loadModules('IP-MIB'); +SNMP::loadModules('IP-FORWARD-MIB'); + +my $sess = SNMP::Session->new(DestHost => 'localhost', Community => 'public', Version => 2, UseEnums => 1); + +my @getThese = [['ifTable'], ['ifXTable']]; + +while(1) { +	$sess->bulkwalk(0, 10, @getThese, \&callback); +	SNMP::MainLoop(10); +} + +sub callback{ +	my @top = $_[0]; +	my %tree; +	my %nics; +	my @nicids; +	for my $ret (@top) { +		for my $var (@{$ret}) { +			for my $inner (@{$var}) { +				my ($tag,$type,$name,$iid, $val) = ( $inner->tag ,$inner->type , $inner->name, $inner->iid, $inner->val); +				$tree{$iid}{$tag} = $val; +				if ($tag eq "ifIndex") { +					push @nicids, $iid; +				} +			} +		} +	} + +	for my $nic (@nicids) { +		$nics{$tree{$nic}{'ifName'}} = $tree{$nic}; +	} +	print Dumper(\%nics); +} | 
