#!/usr/bin/perl -w

use threads;
use Thread::Queue;
use SNMP;
use strict;

my $queue = Thread::Queue->new();
my @oids = qw( ifInOctets ifOutOctets );

sub poller()
{
	while(my $device = $queue->dequeue())
	{	
		my $sess = new SNMP::Session( 
			DestHost 	=> $device,
			Community	=> <your commstring>,
			Version 	=> 2
		);

		my $stat = $sess->gettable('ifTable', noindexes => 1, columns => [ @oids ]);
		if(scalar(keys(%{$stat})) == 0) 
		{ 	
			warn "Problem? ".$sess->{ErrorStr}."\n";
		} else {
			print "Result Num for $device by ".threads->self->tid().": ".scalar(keys(%{$stat}))."\n";
		}
	
		&SNMP::close_sess( $sess->{SessPtr} );
	}
}

&SNMP::is_single(1);
&SNMP::initMib();
&SNMP::loadModules('ALL');

my $t1 = threads->new( \&poller );
my $t2 = threads->new( \&poller );

while(1)
{
	$queue->enqueue( qw( <your devices> ) );
	sleep 5;
}
