加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

anyevent::snmp(2) 扫描地址段

发布时间:2020-12-16 00:10:24 所属栏目:大数据 来源:网络整理
导读:前面实现了单个ip的anyevent,现在可以实现地址段的扫描.这个和ping很类似. #/usr/bin/env perl#测试anyevent::snmp 并发use AnyEvent;use AnyEvent::SNMP;use Net::SNMP;my $cocurrent = 100; # 并发数#my @todoList = map { "192.168.6." . $_ } (1 .. 254)

前面实现了单个ip的anyevent,现在可以实现地址段的扫描.这个和ping很类似.

#/usr/bin/env perl
#测试anyevent::snmp 并发

use AnyEvent;
use AnyEvent::SNMP;
use Net::SNMP;



my $cocurrent = 100;    # 并发数
#my @todoList = map { "192.168.6." . $_ } (1 .. 254); #
my @todoList = ("192.168.6.87","192.168.6.25","192.168.6.45"); #

my $oid=".1.3.6.1.2.1.1.1.0";  #sysDescr


my $cv = AnyEvent->condvar;


doit() foreach 1..$cocurrent;

sub doit{
    my $ip = shift @todoList;
    return if not defined $ip;

    $cv->begin;
   # my $oid=".1.3.6.1.2.1.1.7.0";
   # my @oids=($oid);
   print "$ip.n";
    my $sess=Net::SNMP->session (-hostname => $ip,-community => "public",-timeout => 1,-nonblocking => 1,-translate   => [-timeticks => 0x0]
                     )
          ->get_request (
           -varbindlist => [ $oid ],#-varbindlist      => @oids,-callback => sub { done(@_,$ip) }
          );

}

sub done {  
    my ($session,$ip) = @_;
    my $result = $session->var_bind_list();

      if (!defined $result) {
         printf "ERROR: Get request failed for host '%s': %s.n",$session->hostname(),$session->error();
                
      }
      else{
          printf "The sysDescr for host '%s' is %s.n",$result->{$oid};
      }    
      $cv->end();      
      &doit();              
}


$cv->recv(); 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读