> I need some assistance.
> 
> I wrote a script that takes an array of IP addresses, and in a foreach
> loop uses a subroutine to make a few SNMP connections, and writes
> results to a flat file.(snipet below)
> 
> For 1000 IP addresses, it takes 17 minutes.  I wonder if there's a way
> to fork 10-20 (at a time) (subroutine) processes so I can process 10
> devices at a time.
> 
> I ask because some of our locations have 4000+ devices, and would take
> well over an hour to gather data linearly.
> 
> -Mike
> 
> Loop that calls sub:
> 
> foreach $ip (@cmip){
>     if($ip ne '0.0.0.0'){
>       &pollmodem($ip,$com);
>     }
>   }
> 

Sure, depends on how complex you want to get, and what &pollmodem
actually does. Also note that generally we drop the & in Perl 5 and that
you should be using 'strict' and 'warnings'.

perldoc perlipc
perldoc -f fork
perldoc -f wait
perldoc -f waitpid
perldoc -f select

Are good places to start.  You might also consider POE, 

http://poe.perl.org

And I am assuming you are using something like Net::SNMP to handle the
remote calls?  Conveniently it appears to provide a non-blocking object
behavior that may make it possible to not have to roll your own, though
I haven't specifically used the module before, check its docs here:

http://search.cpan.org/~dtown/Net-SNMP-4.1.2/lib/Net/SNMP.pm

Specifically see if example 4 provides you close to what you need,

http://search.cpan.org/~dtown/Net-SNMP-4.1.2/lib/Net/SNMP.pm#4._Non-blocking_SNMPv1_get-request_for_sysUpTime_on_multiple_hosts

HTH,

http://danconia.org

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to