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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |