OK I enabled the debug option and this is what i got in the end :
No response from remote host "100.2.33.254" debug: [187] POE::Component::SNMP::close_snmp_session: calling __clear_pending debug: [604] POE::Component::SNMP::Dispatcher::__clear_pending(): start debug: [615] POE::Component::SNMP::Dispatcher::__clear_pending(): clearing 0 pending requests debug: [313] POE::Component::SNMP::Dispatcher::_unwatch_socket(): [152] refcount 0, unselect debug: [645] POE::Component::SNMP::Dispatcher::__clear_pending(): done and here it hangs. Best Regards, -- Rehan Azher Cell: +65 92967887 LinkedIn: http://www.linkedin.com/in/rehanazher On Thu, Oct 28, 2010 at 11:03 AM, Rehan Azher <rehan.az...@gmail.com> wrote: > Hi Experts, > > I am new to POE, and to be on true end do not have more perl experience > except some small scripts. Now I am trying to POLL one Subnet Range using > POE::Component::SNMP. Results are displayed but at the end when > $heap->{pending}=0 it dosent seems to exit the snmp_handler sub . > > > Following is my code: > > POE::Session->create( inline_states => > { _start => \&_start_subnet_system, > snmp_handler => \&snmp_subnet_system_handler, > } > ); > sub _start_subnet_system { > my ($kernel, $heap) = @_[KERNEL, HEAP]; > foreach my $address (@reachable_hosts) { > POE::Component::SNMP->create( alias => > "$address", > hostname => "$address", > # if you have seperate community strings for > each host > # build a hash (@addresses becomes > %addresses)and > # associate them that way and then set it > here. > community => > $snmp_settings[$temp_loop]{'community_string'}, > version > =>$snmp_settings[$temp_loop]{'snmp_version'}, > timeout > =>$snmp_settings[$temp_loop]{'timeout'}, > retries > =>$snmp_settings[$temp_loop]{'retries'}, > # debug => 0x0A, > ); > $kernel->post( $address => walk => > snmp_handler => -baseoid => $system_oid); > # If you are polling for N oids, this next line > must reflect that, otherwise > # it will stop after the first OID and not try > any of the others. > $heap->{pending} = scalar(@reachable_hosts)-1; > } > } > $poe_kernel->run(); > print "Total Discovered Hosts: > $discovered_host_count\n"; > print "Total Not Discovered Hosts: > $not_discovered_host_count\n"; > sub snmp_subnet_system_handler { > my ($kernel, $heap, $request, $response) = @_[KERNEL, HEAP, ARG0, > ARG1]; > my ($alias, $host, $cmd, @args) = @$request; > my ($results, @callback_args) = @$response; > if (ref $results) { > $discovered_host_count++; > } else { > $not_discovered_host_count++; > } > if (--$heap->{pending} == 0) { > * $kernel->post( $alias => 'finish' );* > } > } > > Where: > > @reachable_hosts contains all hosts which are reachable via ICMP Ping. > @snmp_settings is a hash of SNMP Settings need to be apploed , tested and > printed all the values it has all valued required. > $system_oid = '.1.3.6.1.2.1.1' > > In fact this is a modified version of this code: > > http://www.gdd.net/index.php/Asynchronous_SNMP_poller_%28Perl%29 > > Above code also hangs at this point *$kernel->post( $alias => 'finish' );* > > Can Any pone pelase help on this. > > > Best Regards, > > > -- > Rehan Azher > Cell: +65 92967887 > LinkedIn: http://www.linkedin.com/in/rehanazher > >